AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203
思路:
SBlct;
代码:
#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
int n,m,f[maxn],ch[maxn][],rev[maxn],ki[maxn],sta[maxn],top,lit,size[maxn];
inline void in(int &now)
{
char Cget=getchar();now=;
while(Cget>''||Cget<'')Cget=getchar();
while(Cget>=''&&Cget<='')
{
now=now*+Cget-'';
Cget=getchar();
}
}
void updata(int now)
{
size[now]=size[ch[now][]]+size[ch[now][]]+;
}
void downdata(int now)
{
if(rev[now])
{
swap(ch[now][],ch[now][]);
rev[now]^=,rev[ch[now][]]^=,rev[ch[now][]]^=;
}
}
bool isroot(int now)
{
return (ch[f[now]][]!=now)&&(ch[f[now]][]!=now);
}
void rotate(int now)
{
int fa=f[now],ffa=f[fa],l=(ch[fa][]==now),r=l^;
if(!isroot(fa)) ch[ffa][ch[ffa][]==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=,sta[]=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][]==now)^(ch[ffa][]==fa)) rotate(fa);
else rotate(now);
}
rotate(now);
}
}
void access(int now)
{
for(int i=;now;i=now,now=f[now]) splay(now),ch[now][]=i;
}
void makeroot(int now)
{
access(now),splay(now),rev[now]^=;
}
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][]=;
}
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][]];
}
int main()
{
freopen("data.txt","r",stdin);
in(n),lit=n+;int u,v,op;
for(int i=;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==) 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 ;
}
AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203的更多相关文章
- [BZOJ2002][洛谷P3203][Hnoi2010]Bounce 弹飞绵羊(LCT维护链长)
luogu传送门 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 16082 Solved: ...
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊 動態樹
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 4055 Solved: 2172[Submi ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 【分块】
任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 9071 Solved: 4652[Submi ...
- 【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊 link-cut-tree
2016-05-30 11:51:59 用一个next数组,记录点x的下一个点是哪个 查询时,moveroot(n+1),access(x),splay(x) ,输出size[ch[x][0]]即为答 ...
- 【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊 分块
[bzoj2002][Hnoi2010]Bounce 弹飞绵羊 2014年7月30日8101 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀 ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 LCT
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...
- bzoj 2002 : [Hnoi2010]Bounce 弹飞绵羊 (LCT)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 题面: 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: ...
随机推荐
- [zz]【整理】Python中Cookie的处理:自动处理Cookie,保存为Cookie文件,从文件载入Cookie
http://www.crifan.com/python_auto_handle_cookie_and_save_to_from_cookie_file/ #!/usr/bin/python # -* ...
- hadoop压缩和解压
最近有一个hadoop集群上的备份需求.源文件有几百G,如果直接复制太占用磁盘空间.将文件从hadoop集群下载到本地,压缩之后再上传到hadoop则太耗时间.于是想到能否直接在HDFS文件系统上进行 ...
- 神奇的sed替换
1. 替换含有某关键字的行 $ sed 's/.*ami-07bc4ae4d4d662f53.*/ami = "ami-07bc4ae4d4d662f53898989898989" ...
- SpringMVC 用注解Annotation驱动的IoC功能@Autowired @Component
转载自:http://blog.csdn.net/lufeng20/article/details/7598564 本文分为三个部分:概述.使用注解进行属性注入.使用注解进行Bean的自动定义. 一, ...
- 洛谷2944 [USACO09MAR]地震损失2Earthquake Damage 2
https://www.luogu.org/problem/show?pid=2944 题目描述 Wisconsin has had an earthquake that has struck Far ...
- vijos 1153 背包+标记
描述 新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵. 比赛开始了, ...
- java collection (二)
1.集合的概念: (1)现实生活中:很多的事物凑在一起. (2)数学中的集合:具有共同属性的事物的总体. (3java 中的集合类: 是一种工具类,就像是容器,存储任意数量的具有共同属性的对象.(集合 ...
- html 制作静态页面新知识
1.在区块线边框添加一条水平线 例如:<div style:"height :300px;width:800px;border-bottom: solid 1px orange ;& ...
- 【OneNote】使用线性格式输入数学公式
在OneNote中按Alt+=,就可以开始输入公式. # 对齐公式数组 可以使用@和&来实现,如 \eqarray(x+1&=2@1+2+3+y&=z@3/x&=6)& ...
- foreign key constraint fails错误的原因
建表:CREATE TABLE Course ( Cno Char(4) PRIMARY KEY, Cname Char(40), Cpno Char(4), Ccredit Int, FOREIGN ...