链接

题意:给你每个数字出现的时间和消失的时间,求每个时刻最大异或和

题解

按照时间建立线段树,线段树每个节点开个vector存一下这个时间区间有哪些数,然后递归进入的时候加入线性基,开一个栈记录一下加了哪些基底,回溯的时候把之前加的删掉即可

  1. #include<bits/stdc++.h>
  2. #define REP(i,a,b) for(int i(a);i<=(b);++i)
  3. using namespace std;
  4. typedef long long ll;
  5. inline int read(){char c,p=0;int w;
  6. while(!isdigit(c=getchar()))if(c=='-')p=1;w=c&15;
  7. while(isdigit(c=getchar()))w=w*10+(c&15);return p?-w:w;
  8. }
  9. inline char smax(int&x,const int&y){return x<y?x=y,1:0;}
  10. inline char smin(int&x,const int&y){return x>y?x=y,1:0;}
  11. const int N=5e5+5,n=read();
  12. vector<int>g[N<<2];
  13. #define ls o<<1
  14. #define rs o<<1|1
  15. inline void ins(int o,int l,int r,int x,int y,int z){
  16. if(x<=l&&r<=y){g[o].push_back(z);return;}
  17. int mid=l+r>>1;
  18. if(x<=mid)ins(ls,l,mid,x,y,z);
  19. if(y>mid)ins(rs,mid+1,r,x,y,z);
  20. }
  21. int p[33],s[33],top;
  22. inline void ins(int x){for(int i=31;~i;--i)if(x>>i&1)if(!p[i]){p[i]=x,s[++top]=i;break;}else x^=p[i];}
  23. inline void erase(int pre){while(top!=pre)p[s[top--]]=0;}
  24. inline void ask(int o,int l,int r){
  25. int pre=top;
  26. for(int i=0;i<g[o].size();++i)ins(g[o][i]);
  27. if(l==r){
  28. int ans=0;
  29. for(int i=31;~i;--i)smax(ans,ans^p[i]);
  30. return printf("%d\n",ans),erase(pre);
  31. }
  32. int mid=l+r>>1;ask(ls,l,mid),ask(rs,mid+1,r);erase(pre);
  33. }
  34. map<int,int>pos;
  35. map<int,int>::iterator it;
  36. int main(){
  37. REP(i,1,n){
  38. int x=read();
  39. if(x>0)pos[x]=i;
  40. else{
  41. it=pos.find(-x);
  42. ins(1,1,n,it->second,i-1,-x);
  43. pos.erase(it);
  44. }
  45. }
  46. for(it=pos.begin();it!=pos.end();++it)
  47. ins(1,1,n,it->second,n,it->first);
  48. ask(1,1,n);
  49. return 0;
  50. }

[BZOJ4184]shallot 线段树+线性基的更多相关文章

  1. BZOJ4184:shallot(线段树分治,线性基)

    Description 小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏. 每个时刻她会给小葱一颗小葱苗或者是从小葱手里拿走一颗小葱苗,并且 让小葱 ...

  2. bzoj 4568: [Scoi2016]幸运数字【树链剖分+线段树+线性基】

    一眼做法,好处是好想好写坏处是常数大,容易被卡(bzoj loj 洛谷开O2 能AC,不开有90分-- 大概就是树剖之后维护线段树,在线段树的每个节点上上维护一个线性基,暴力\( 60^2 \)的合并 ...

  3. 2019牛客多校第四场B xor——线段树&&线性基的交

    题意 给你 $n$ 个集合,每个集合中包含一些整数.我们说一个集合表示一个整数当且仅当存在一个子集其异或和等于这个整数.现在你需要回答 $m$ 次询问 ($l, r, x$),是否 $l$ 到 $r$ ...

  4. Comet OJ - Contest #3 D 可爱的菜菜子 线段树+线性基

    题意 给你一个长度为 \(n\) 的整数序列 \(a_1, a_2, \ldots, a_n\),你需要实现以下两种操作,每个操作都可以用四个整数 \(opt\ l\ r\ v\) 来表示: \(op ...

  5. CodeForces - 587E[线段树+线性基+差分] ->(线段树维护区间合并线性基)

    题意:给你一个数组,有两种操作,一种区间xor一个值,一个是查询区间xor的结果的种类数 做法一:对于一个给定的区间,我们可以通过求解线性基的方式求出结果的种类数,而现在只不过将其放在线树上维护区间线 ...

  6. P哥的桶(线段树+线性基)

    https://www.luogu.org/problem/P4839 题目: 有两个操作 1 a b  在a的位置添加b数值  (注意一个位置可以有多个值) 2 a b : 在 a到b的范围任取任意 ...

  7. 【2017西安邀请赛:A】XOR(线段树+线性基)

    前言:虽然已经有很多题解了,但是还是想按自己的理解写一篇. 思路:首先分析题目 一.区间操作 —— 线段树 二.异或操作 —— 线性基 这个两个不难想,关键是下一步的技巧 “或”运算 就是两个数的二进 ...

  8. Comet OJ - Contest #3 D可爱的菜菜子(线段树+线性基的合并)

    这题其实挺经典的,看到求异或最大,显然想到的是线性基,不过这怎么维护?当然区间有关的东西都可以上线段树,区间修改时记录每个点的修改量k,然后合并线性基时再加入线性基.因为线性基是求一组极大线性无关组, ...

  9. 2019年牛客多校第四场 B题xor(线段树+线性基交)

    题目链接 传送门 题意 给你\(n\)个基底,求\([l,r]\)内的每个基底是否都能异或出\(x\). 思路 线性基交板子题,但是一直没看懂咋求,先偷一份咖啡鸡板子写篇博客吧~ 线性基交学习博客:传 ...

随机推荐

  1. atom玩法

    1.先用 git 下载一个 react-devtools: $ cd /some-directory$ git clone --recursive https://github.com/faceboo ...

  2. UI Framework-1: Aura Focus and Activation

    Focus and Activation Focus and Activation are closely related.   Definitions Focused window - this i ...

  3. kubernetes学习与实践篇(二) kubernetes1.5 的安装和集群环境部署

    kubernetes 1.5 的安装和集群环境部署 文章转载自:http://www.cnblogs.com/tynia/p/k8s-cluster.html 简介: Docker:是一个开源的应用容 ...

  4. nodejs学习(一)--express+ejs生成项目

    一.说一下 首先保证node环境已经安装完毕,npm能正常使用,安装可自行百度,比较简单,在此不做赘述. 二.直接开码 安装 npm install express express-generator ...

  5. 删除小脚本 srm

    提示:只能删除当前路径下的目录或文件 #!/bin/bash #将测试好的脚本,拷贝到 $PATH 能够搜索到目录下.并且改名 例如: /usr/local/bin cp /test/srm.sh / ...

  6. BNUOJ 4049 四叉树

    四叉树 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Ma ...

  7. ArcGIS api for javascript——加载查询结果,单击显示信息窗口

    描述 本例在开始和地图交互前执行一个查询并加载结果.这允许用户点击任意郡县立即看到一个InfoWindow. QueryTask构造函数接受被查询的图层,即ESRI sample server上ESR ...

  8. 免费WiFi初体验——个小白的WiFi旅程

    说来羞愧,真正接触到WiFi还是在毕业后,此前自己封闭在一个人的世界,再加上外在学校的包围,我还成了个"山里"的孩子. 去年毕业了,也算是个90后,可自觉得心态过于成熟.了解外界太 ...

  9. hdu1879 继续畅通project(最小生成树)

    继续畅通project Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  10. CodeForces 570B Simple Game 概率

    原题: http://codeforces.com/contest/570/problem/B 题目: Simple Game time limit per test1 second memory l ...