博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2002 LCT板子题
阅读量:5788 次
发布时间:2019-06-18

本文共 1670 字,大约阅读时间需要 5 分钟。

思路:

LCT啊...

(分块也行)

不过YOUSIKI出了一道“弹飞大爷” 就不能用分块水过去了

//By SiriusRen#include 
#include
using namespace std;const int N=200050;int fa[N],ch[N][2],rev[N],size[N],n,op,q[N],top,a[N],m,xx,yy;bool isroot(int x){
return ch[fa[x]][0]!=x&&ch[fa[x]][1]!=x;}void push_up(int x){size[x]=size[ch[x][0]]+size[ch[x][1]]+1;}void push_down(int x){
if(rev[x])rev[x]=0,rev[ch[x][0]]^=1,rev[ch[x][1]]^=1,swap(ch[x][0],ch[x][1]);}void rotate(int p){ int q=fa[p],y=fa[q],f=(ch[q][1]==p); ch[q][f]=ch[p][!f],fa[ch[q][f]]=q; ch[p][!f]=q,fa[p]=y; if(!isroot(q)){ if(ch[y][0]==q)ch[y][0]=p; if(ch[y][1]==q)ch[y][1]=p; }fa[q]=p;push_up(q);}void splay(int x){ q[++top]=x; for(int i=x;!isroot(i);i=fa[i])q[++top]=fa[i]; while(top)push_down(q[top--]); for(int y=fa[x];!isroot(x);rotate(x),y=fa[x])if(!isroot(y)){ if((ch[y][0]==x)^(ch[fa[y]][0]==y))rotate(x); else rotate(y); }push_up(x);}void access(int x){
for(int t=0;x;t=x,x=fa[x])splay(x),ch[x][1]=t,push_up(x);}void makeroot(int x){access(x),splay(x),rev[x]^=1;}void link(int x,int y){makeroot(x),fa[x]=y;}void cut(int x,int y){makeroot(x),access(y),splay(y);ch[y][0]=fa[x]=0;}void split(int x,int y){makeroot(x),access(y),splay(y);}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++)link(i,a[i]+i>n?n+1:a[i]+i); scanf("%d",&m); while(m--){ scanf("%d%d",&op,&xx),xx++; if(op==1)split(n+1,xx),printf("%d\n",size[xx]-1); else scanf("%d",&yy),cut(xx,xx+a[xx]>n?n+1:xx+a[xx]),a[xx]=yy,link(xx,xx+a[xx]>n?n+1:xx+a[xx]); }}

 

转载于:https://www.cnblogs.com/SiriusRen/p/6532756.html

你可能感兴趣的文章
js 利用事件委托解决mousedown中的click
查看>>
游戏设计艺术 第2版 (Jesse Schell 著)
查看>>
Java 面向对象(基础) 知识点总结I
查看>>
miniUI mini-monthpicker ie8兼容性问题
查看>>
C++11 double转化为string
查看>>
相机中白平衡的算法模拟实现
查看>>
ASP 中调用函数关于Call使用注意的问题
查看>>
python教程(六)·字符串
查看>>
JPA的主键生成策略
查看>>
用 Markdown 写作(一)——添加文章页内导航
查看>>
Aizu 0525 Osenbei(状压+贪心)
查看>>
HDU 5090 Game with Pearls (贪心)
查看>>
POJ 2229 Sumsets(递推,找规律)
查看>>
面试题: 大公司面试 !=!=未看
查看>>
面试题:静态代理和动态代理的区别和联系 没用
查看>>
day9 集合基础命令
查看>>
re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
查看>>
爬虫之cookie
查看>>
promise总结
查看>>
hibernate 错误 could not determine type for
查看>>