[CDQ分治 线性基] BZOJ 4184 shallot
来源:互联网 发布:淘宝二手图形工作站 编辑:程序博客网 时间:2024/05/16 16:13
代码应该都看得懂
#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>#include<vector>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef pair<int,int> abcd;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}const int N=500005;const int K=31;struct LB{int a[K+5];LB() { cl(a); }inline void insert(int x){for (int p=K;~p;p--)if (x>>p&1)if (!a[p]){a[p]=x; break;}elsex^=a[p];}inline int query(){int ret=0;for (int p=K;~p;p--)ret=max(ret,ret^a[p]);return ret;}};typedef vector<pair<abcd,int> > Vec;typedef map<int,int>::iterator ITER;Vec a;map<int,int> last,cnt;int ans[N];inline void Solve(int l,int r,LB lb,Vec a){int mid=(l+r)>>1;Vec ls,rs;for (int i=0;i<(signed)a.size();i++){if(a[i].first.first==l && a[i].first.second==r)lb.insert(a[i].second);else if(a[i].first.second<=mid)ls.push_back(a[i]);else if(a[i].first.first>mid)rs.push_back(a[i]);elsels.push_back(make_pair(abcd(a[i].first.first,mid),a[i].second)),rs.push_back(make_pair(abcd(mid+1,a[i].first.second),a[i].second));}if (l==r)ans[l]=lb.query();elseSolve(l,mid,lb,ls),Solve(mid+1,r,lb,rs);}int n,x;int main(){freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(n);for (int i=1;i<=n;i++){read(x);if (x>0)if(++cnt[x]==1) last[x]=i;if (x<0)if(--cnt[-x]==0)a.push_back(make_pair(abcd(last[-x],i-1),-x));}for(ITER it=cnt.begin();it!=cnt.end();it++)if(it->second)a.push_back(make_pair(abcd(last[it->first],n),it->first));Solve(1,n,LB(),a);for (int i=1;i<=n;i++)printf("%d\n",ans[i]);return 0;}
0 0
- [CDQ分治 线性基] BZOJ 4184 shallot
- bzoj 4184: shallot 分治+线性基
- [分治][线性基]BZOJ 4184: shallot
- BZOJ 4184: shallot 线段树分治 线性基
- 【BZOJ 4184】shallot 线性基
- BZOJ 4184 shallot 分治+高斯消元
- 4184: shallot 线段树+按时间分治+线性基
- 【bzoj4184】 shallot 线段树对时间分治+线性基
- 【Bzoj4184】 shallot——时间分治+线性基
- [BZOJ 4184]shallot
- Bzoj 4184 shallot
- bzoj 3262(cdq分治)
- bzoj 1176(cdq分治)
- BZOJ 1176 CDQ分治
- BZOJ 2683 CDQ分治
- BZOJ 1537 cdq分治
- 浅谈CDQ分治 BZOJ
- bzoj 1537 bus|cdq分治
- 会画画有什么用?
- OPENGL灰色shader 和恢复原来像素
- 3.Hibernate中java对象的三种状态
- HDU 3761 (二分 半平面交)
- 遮挡剔除(仅专业版) Occlusion Culling (Pro only)
- [CDQ分治 线性基] BZOJ 4184 shallot
- 下列不属于hash碰撞解决方法的是()。----阿里巴巴2015校招研发在线笔试题
- HBase构架
- 12个优化Unity/GearVR应用的小技巧
- minigui demo helloworld在arm目标板子上的运行
- 关于拉格朗日对偶问题中对偶性的理解 (很有趣)
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- [二分答案 随机增量法] BZOJ 2280 [Poi2011]Plot
- 数组名和数组名取地址的区别