博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203
阅读量:6983 次
发布时间:2019-06-27

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

 

思路:

  SBlct;

 

 

代码:

#include 
using namespace std;#define maxn 200005int n,m,f[maxn],ch[maxn][2],rev[maxn],ki[maxn],sta[maxn],top,lit,size[maxn];inline void in(int &now){ char Cget=getchar();now=0; while(Cget>'9'||Cget<'0')Cget=getchar(); while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; Cget=getchar(); }}void updata(int now){ size[now]=size[ch[now][0]]+size[ch[now][1]]+1;}void downdata(int now){ if(rev[now]) { swap(ch[now][1],ch[now][0]); rev[now]^=1,rev[ch[now][1]]^=1,rev[ch[now][0]]^=1; }}bool isroot(int now){ return (ch[f[now]][1]!=now)&&(ch[f[now]][0]!=now);}void rotate(int now){ int fa=f[now],ffa=f[fa],l=(ch[fa][1]==now),r=l^1; if(!isroot(fa)) ch[ffa][ch[ffa][1]==fa]=now; f[now]=ffa,f[fa]=now,ch[fa][l]=ch[now][r],ch[now][r]=fa; if(ch[fa][l]) f[ch[fa][l]]=fa; updata(fa),updata(now);}void splay(int now){ top=1,sta[1]=now; for(int i=now;!isroot(i);i=f[i]) sta[++top]=f[i]; while(top) downdata(sta[top--]); int fa,ffa; while(!isroot(now)) { fa=f[now],ffa=f[fa]; if(!isroot(fa)) { if((ch[fa][0]==now)^(ch[ffa][0]==fa)) rotate(fa); else rotate(now); } rotate(now); }}void access(int now){ for(int i=0;now;i=now,now=f[now]) splay(now),ch[now][1]=i;}void makeroot(int now){ access(now),splay(now),rev[now]^=1;}void split(int x,int y){ makeroot(x),access(y),splay(y);}void cut(int x,int y){ split(x,y),f[x]=ch[y][0]=0;}void link(int x,int y){ makeroot(x),f[x]=y;}int ofans(int x){ makeroot(lit),access(x),splay(x); return size[ch[x][0]];}int main(){ freopen("data.txt","r",stdin); in(n),lit=n+1;int u,v,op; for(int i=1;i<=n;i++) { in(ki[i]); if(i+ki[i]<=n) link(i,i+ki[i]); else link(i,lit); } in(m); while(m--) { in(op); if(op==1) in(u),u++,printf("%d\n",ofans(u)); else { in(u),in(v),u++; if(u+ki[u]<=n) cut(u,u+ki[u]); else cut(u,lit); ki[u]=v; if(u+v<=n) link(u,u+v); else link(u,lit); } } return 0;}

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6995121.html

你可能感兴趣的文章
4G+宽带高歌猛进:移动双线虐杀联通
查看>>
带你了解超大规模数据中心究竟有何不同?
查看>>
用Python实现每秒处理120万次HTTP请求
查看>>
Android单元测试 - 几个重要问题
查看>>
DNS服务器不能响应的四大解决办法
查看>>
美国税局再遭攻击:原是偷来的社会安全号码作祟
查看>>
如何在Kali Linux中安装Google Chrome浏览器
查看>>
勒索软件防不胜防? 要先从了解它开始
查看>>
大数据精准医疗解读遗传密码 未来医疗健康的变革
查看>>
神经网络基础:七种网络单元,四种层连接方式
查看>>
2014末,Surface Pro 3叫好不叫座只是价格问题?
查看>>
Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)
查看>>
代号“沙尘暴”:黑客剑指日本关键基础设施
查看>>
光纤光缆市场需求高于预期 我国将迎来流量经济
查看>>
晶科能源与森源电气签订300MW光伏组件供货协议
查看>>
中国电信发布转型升级战略:构建一横四纵生态圈
查看>>
全渠道的核心是渠道协同和数据整合
查看>>
“小会话,大学问” - 如何让聊天机器人读懂对话历史?| 论文访谈间 #03
查看>>
让问答更自然 - 基于拷贝和检索机制的自然答案生成系统研究 | 论文访谈间 #02...
查看>>
首航节能:光热行业刚起步 子公司处于亏损状态
查看>>