BZOJ 4184 线段树+高斯消元
来源:互联网 发布:大数据涂子沛书籍下载 编辑:程序博客网 时间:2024/05/17 07:07
思路:
线段树表示的是时间 每回最多log个段
区间覆盖
一直到叶子 的线性基 xor 一下 就是答案
一开始没有思路 看了这篇题解 豁然开朗
http://www.cnblogs.com/joyouth/p/5333181.html
(还是本省的前辈呢)
//By SiriusRen#include <set>#include <vector>#include <cstdio>using namespace std;const int N=500000;int n,top,all,s[N],a[N];struct Node{int id,num;Node(int x,int y){id=x,num=y;}Node(){}};struct Add{int l,r,num;Add(int x,int y,int z){l=x,r=y,num=z;}Add(){}}add[N];struct Ans{ int num[32]; void psh(int x){ for(int i=30;i>=0;i--)if(x&(1<<i)){ if(!num[i]){num[i]=x;break;} else x^=num[i]; } }}jy;bool operator<(Node a,Node b){return a.num<b.num;}set<Node>Set;set<Node>::iterator it;vector<int>vec[N*4];void insert(int l,int r,int pos,int L,int R,int num){ if(l>=L&&r<=R){vec[pos].push_back(num);return;} int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; if(mid<L)insert(mid+1,r,rson,L,R,num); else if(mid>=R)insert(l,mid,lson,L,R,num); else insert(l,mid,lson,L,R,num),insert(mid+1,r,rson,L,R,num);}void dfs(int l,int r,int pos,Ans now){ for(int i=0;i<vec[pos].size();i++)now.psh(vec[pos][i]); if(l==r){ int temp=0; for(int i=30;i>=0;i--)if((temp^now.num[i])>temp)temp^=now.num[i]; printf("%d\n",temp); return; } int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1; dfs(l,mid,lson,now),dfs(mid+1,r,rson,now);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); if(a[i]>0)Set.insert(Node(i,a[i])); else it=Set.lower_bound(Node(0,-a[i])),add[++all]=Add((*it).id,i-1,-a[i]),Set.erase(it); } for(it=Set.begin();it!=Set.end();++it)add[++all]=Add((*it).id,n,(*it).num); for(int i=1;i<=all;i++)insert(1,n,1,add[i].l,add[i].r,add[i].num); dfs(1,n,1,jy);}
0 0
- BZOJ 4184 线段树+高斯消元
- bzoj 线段树专刊
- bzoj 1798 线段树
- BZOJ 1012 线段树
- bzoj 4388 线段树
- BZOJ 1798 线段树
- BZOJ 1112 线段树
- BZOJ 3339 线段树
- bzoj 2957 线段树
- bzoj 1012 线段树
- bzoj 2752 线段树
- bzoj 3519 线段树
- bzoj 1798 线段树
- BZOJ 3038 线段树
- bzoj 3038 线段树
- BZOJ 3110 线段树套线段树
- bzoj 2120&&2453 线段树套权值线段树
- bzoj 2141 线段树套权值线段树
- HDOJ(HDU).1003 Max Sum (DP)
- Linux环境下的三个时间属性以及find指令相关测试
- 、HTML“计算机输出”标签<code><kbd><samp><tt><var><pre>
- 《数据仓库》读书笔记:第一章
- Hadoop官方文档翻译——YARN Architecture(2.7.3)
- BZOJ 4184 线段树+高斯消元
- 写less代码减运算时应注意减号和变量之间必须有空格
- 《数据仓库》读书笔记:第二章
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) 题解(待续)
- servlet是单例模式么?jsp线程安全么?
- 谈一谈GVRP协议与VTP协议
- (二十七)Qt容器之关联容器
- Hadoop官方文档翻译——HDFS Architecture 2.7.3
- [oracle] 常用函数 - Lpad和Rpad函数