省选专练[HNOI2010]BOUNCE 弹飞绵羊
来源:互联网 发布:abb编程培训 编辑:程序博客网 时间:2024/05/16 07:18
#include<iostream>#include<cstdio>#include<queue>#include<cmath>#include<algorithm>const int N=1e6+7;using namespace std;int ch[N][2]={0};int fa[N]={0};int rev[N]={0};//lazyint val[N]={0};int siz[N]={0};int n,m;int ed=300000;inline int getson(int x){if(ch[fa[x]][1]==x)return 1;if(ch[fa[x]][0]==x)return 0;return -1;}inline void update(int x){siz[x]=1;if(x){if(ch[x][0])siz[x]+=siz[ch[x][0]];if(ch[x][1])siz[x]+=siz[ch[x][1]];}}inline void pushdown(int x){if(!rev[x])return;rev[x]=0;rev[ch[x][0]]^=1;rev[ch[x][1]]^=1;swap(ch[x][0],ch[x][1]);}inline void Clear(int x){if(getson(x)!=-1)Clear(fa[x]);pushdown(x);}inline void rotate(int x){int f=fa[x];int grandf=fa[f];int l=getson(x);int r=l^1;if(getson(f)!=-1){ch[grandf][ch[grandf][1]==f]=x;}fa[ch[x][r]]=f;fa[f]=x;fa[x]=grandf;ch[f][l]=ch[x][r];ch[x][r]=f;update(f);update(x);}inline void Splay(int x){Clear(x);for(int f=fa[x];getson(x)!=-1;rotate(x),f=fa[x]){if(getson(f)!=-1)rotate(getson(f)==getson(x)?f:x);}update(x);}inline void access(int x){for(int i=0;x;x=fa[i=x]){Splay(x);ch[x][1]=i;update(x);}}inline void makeroot(int x){access(x);Splay(x);rev[x]^=1;}inline void link(int x,int y){makeroot(x);fa[x]=y;}inline void cut(int x,int y){makeroot(x);access(y);Splay(y);fa[x]=ch[y][0]=0;update(y);}inline int getans(int x){makeroot(x);access(ed);Splay(ed);return siz[ed];}int main(){scanf("%d",&n);ed=n+1;for(int i=1;i<=ed;i++)siz[i]=1;for(int i=1;i<=n;i++){int u,v;u=i;scanf("%d",&v);if(u+v>n)link(u,ed);elselink(u,u+v);val[i]=v;}int m;scanf("%d",&m);for(int i=1;i<=m;i++){int opt;int u,k;scanf("%d",&opt);if(opt==1){scanf("%d",&u);u++;printf("%d\n",getans(u)-1);}if(opt==2){scanf("%d%d",&u,&k);u++;if(u+val[u]<ed)cut(u,u+val[u]);elsecut(u,ed);if(u+k<ed)link(u,u+k);elselink(u,ed);val[u]=k;}}}LCT模板,挺简单的
阅读全文
0 0
- 省选专练[HNOI2010]BOUNCE 弹飞绵羊
- [Hnoi2010]Bounce 弹飞绵羊
- [Hnoi2010]Bounce 弹飞绵羊
- [Hnoi2010]Bounce 弹飞绵羊
- [HNOI2010]BOUNCE 弹飞绵羊
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
- [Hnoi2010]Bounce 弹飞绵羊 LCT
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
- 【BZOJ 2002】 [Hnoi2010]Bounce 弹飞绵羊
- [BZOJ2002][Hnoi2010]Bounce 弹飞绵羊 && LCT
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
- bzoj2002:[Hnoi2010]Bounce 弹飞绵羊
- [BZOJ2002][Hnoi2010]Bounce 弹飞绵羊
- 【HNOI2010】【BZOJ2002】Bounce 弹飞绵羊
- BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊
- 【bzoj2002】 [Hnoi2010]Bounce 弹飞绵羊
- bzoj2002: [Hnoi2010]Bounce 弹飞绵羊
- [BZOJ2002] [Hnoi2010]Bounce 弹飞绵羊
- C#串口上位机源代码
- FlexboxLayout选中之——单选/多选
- ubuntu16.04环境用pip3安装dlib
- struts2-hibernate 总结
- 171208之Oracle总结(二)
- 省选专练[HNOI2010]BOUNCE 弹飞绵羊
- Hello Createjs
- HDOJ1397 Goldbach's Conjecture(哥德巴赫猜想)
- Ruby元编程
- Web前端开发精品课HTML CSS JavaScript基础教程第二十三章课后编程题答案
- 凯哥自媒体赚钱秘籍:百家号怎么快速做爆文?
- 根据省份证算年龄
- java.net.URISyntaxException: Illegal character in scheme name at index 0:
- 第十周项目1