hdu 4666 最远曼哈顿
2013-08-29 15:39
344 查看
一般这也太难想到了,这道题完全根据09年武森写的一篇《《浅谈信息学竞赛中的“0”和“1”——二进制思想在信息学竞赛中的应用》》一文中的一个例子写的。
以后得学着看论文喽~
考察multiset的使用
做完这道题可以再看一下poj2926
以后得学着看论文喽~
考察multiset的使用
做完这道题可以再看一下poj2926
#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<set> #include<map> #include<stdlib.h> using namespace std; multiset<int >mst[100]; int s[600005][10]; int main() { int q,k,od,p; while(scanf("%d%d",&q,&k)!=EOF) { for(int i=0; i<=100; i++) mst[i].clear(); for(int i=1; i<=q; i++) { scanf("%d",&od); if(od==0) { for(int j=0; j<k; j++) scanf("%d",&s[i][j]); for(int i1=0; i1<(1<<k); i1++) { int t=0; for(int j1=0; j1<k; j1++) { if(i1&(1<<j1)) t+=s[i][j1]; else t-=s[i][j1]; } mst[i1].insert(t); } } else { scanf("%d",&p); for(int i1=0; i1<(1<<k); i1++) { int t=0; for(int j1=0; j1<k; j1++) { if(i1&(1<<j1)) t+=s[p][j1]; else t-=s[p][j1]; } multiset<int>::iterator it=mst[i1].find(t); mst[i1].erase(it); } } int ans=0; for(int i=0; i<(1<<k); i++) { multiset<int>::iterator it=mst[i].end(); it--; int Max=(*it); it=mst[i].begin(); int Min=(*it); ans=max(ans,Max-Min); } printf("%d\n",ans); } } return 0; }
相关文章推荐
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
- 2013 多校第七场 hdu 4666 Hyperspace(最远曼哈顿距离)
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
- hdu 4666 Hyperspace(多维度最远曼哈顿距离)
- 最远曼哈顿距离小结 poj 2926 Requirements&hdu 4666 Hyperspace
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
- 最远曼哈顿距离小结 poj 2926 Requirements&hdu 4666 Hyperspace
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
- HDU 4666 STL求多维最远曼哈顿距离
- HDU 4666 最远曼哈顿距离
- HDU 4666 经典的求最远曼哈顿距离
- hdu-4666-Hyperspace-最长曼哈顿距离
- HDU 4666 Hyperspace【最远曼哈顿距离+优先队列】
- HDU-4666 最远曼哈顿距离
- HDU 4666 Hyperspace(最长曼哈顿距离)
- HDU-4666 Hyperspace 曼哈顿距离
- hdoj 4666 Hyperspace 【最远曼哈顿距离】
- HDU 5626 Clarke and points 平面两点曼哈顿最远距离
- Hdu-4666 Hyperspace(曼哈顿距离)