7GOJ 23 fleet [主席树]
来源:互联网 发布:qq飞车数据异常 编辑:程序博客网 时间:2024/05/16 08:15
SPOJ D-Query的强制版,水题。
#include<map>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define mid ((l+r)>>1)const int N=200010;int root[N],tot,val[N],lastans,n,q,la,ra,tmp;map<int,int> M;struct node{ int ls,rs,ret;}tree[N*40];inline void build(int l,int r,int &rt,int x,int id,int w){ tree[++tot]=tree[x],tree[rt=tot].ret+=w; if(l==r)return; if(mid>=id)build(l,mid,tree[rt].ls,tree[x].ls,id,w); else build(mid+1,r,tree[rt].rs,tree[x].rs,id,w);}inline int query(int x,int l,int r,int rt){ if(l>=x)return tree[rt].ret; if(mid>=x)return query(x,l,mid,tree[rt].ls)+tree[tree[rt].rs].ret; else return query(x,mid+1,r,tree[rt].rs);}inline void read(int &res){ static char ch;int flag=1; while((ch=getchar())<'0'||ch>'9')if(ch=='-')flag=-1;res=ch-48; while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-48;res*=flag;}int main(){ read(n); for(register int i=1;i<=n;++i){ read(val[i]); if(!M.count(val[i])) build(1,n,root[i],root[i-1],i,1); else build(1,n,tmp,root[i-1],M[val[i]],-1), build(1,n,root[i],tmp,i,1); M[val[i]]=i; } read(q); for(register int i=1;i<=q;++i){ read(la),read(ra); la^=lastans,ra^=lastans; printf("%d\n",lastans=query(la,1,n,root[ra])); } return 0;}
阅读全文
0 0
- 7GOJ 23 fleet [主席树]
- 7GOJ 偶像 [线段树]
- 7GOJ 计划 [CDQ分治]
- 7GOJ 25 collection [分块][莫队]
- 主席、树、主席树!
- 7GOJ 学院 [连通性][并查集/DFS]
- 7GOJ 24 girls [可持久化Treap--区间操作]
- GOJ 1052
- GOJ 1053
- GOJ 1069
- GOJ 1096
- GOJ 1103
- 主席树
- 主席树
- 主席树
- 主席树
- 主席树
- 主席树
- Angular.js(二)
- java.lang.OutOfMemoryError: PermGen space
- 2-静态库的创建和使用
- 网络信息安全攻防平台脚本关快速口算
- UVA 122
- 7GOJ 23 fleet [主席树]
- opencv访问图片中像素的方法(一)——指针访问
- Chapter04 编写基本的MapReduce程序(一) 专利数据集实战一
- 《零基础学Python》Adventures IN Python学习笔记二
- PHP静态方法与非静态方法的区别
- Java使用Redis实现分布式锁
- bootstrap中charts 图表放在tab-panel中不加载数据
- [hihoCoder]#1033 : 交错和
- python send mail