[BZOJ2002][Hnoi2010]Bounce弹飞绵羊 LCT
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002
建图,每次往后面跳就往目标位置连边,将跳出界的点设为同一个点。对于修改操作发现可以用LCT维护图的连通性,然后用size域维护跳的点的次数就行了。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int inline readint(){
int Num;char ch;
while((ch=getchar())<''||ch>'');Num=ch-'';
while((ch=getchar())>=''&&ch<='') Num=Num*+ch-'';
return Num;
}
void outint(int x){
if(x>=) outint(x/);
putchar(x%+'');
}
int n,fa[],ch[][],siz[];
bool inline Isroot(int &x){
return ch[fa[x]][]!=x&&ch[fa[x]][]!=x;
}
void inline Pushup(int &x){
siz[x]=siz[ch[x][]]+siz[ch[x][]]+;
}
void Rot(int x,int p){
int y=fa[x],z=fa[y];
fa[ch[x][!p]]=y;ch[y][p]=ch[x][!p];
fa[x]=z;if(!Isroot(y)) ch[z][ch[z][]==y]=x;
fa[y]=x;ch[x][!p]=y;
Pushup(y);Pushup(x);
}
void Splay(int x){
while(!Isroot(x)){
if(Isroot(fa[x])) Rot(x,ch[fa[x]][]==x);
else{
int y=fa[x],z=fa[y],p=ch[z][]==y;
if(ch[y][p]==x) Rot(y,p),Rot(x,p);
else Rot(x,!p),Rot(x,p);
}
}
}
void Access(int x){
for(int t=;x;x=fa[x]){
Splay(x);
ch[x][]=t;
Pushup(x);
t=x;
}
}
void Link(int x,int y){
Access(x);Splay(x);
fa[ch[x][]]=;
ch[x][]=;
fa[x]=y;
Pushup(x);
}
void Qry(int x){
Access(x);Splay(x);
outint(siz[x]);
putchar('\n');
}
int main(){
n=readint();
for(int i=;i<=n;i++){
int x=readint()+i;
fa[i]=x>n?:x;
}
int m=readint();
for(int i=;i<=m;i++){
int opt=readint();
if(opt==){
int a=readint();
Qry(a+);
}
else{
int a=readint(),
b=readint();
Link(a+,(a+b+)>n?:(a+b+));
}
}
return ;
}
[BZOJ2002][Hnoi2010]Bounce弹飞绵羊 LCT的更多相关文章
- [BZOJ2002] [Hnoi2010] Bounce 弹飞绵羊 (LCT)
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- BZOJ2002 Hnoi2010 Bounce 弹飞绵羊 【LCT】【分块】
BZOJ2002 Hnoi2010 Bounce 弹飞绵羊 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始, ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 LCT
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...
- [bzoj2002][Hnoi2010]Bounce弹飞绵羊_LCT
Bounce弹飞绵羊 bzoj-2002 Hnoi-2010 题目大意:n个格子,每一个格子有一个弹簧,第i个格子会将经过的绵羊往后弹k[i]个,达到i+k[i].如果i+k[i]不存在,就表示这只绵 ...
- bzoj2002: [Hnoi2010]Bounce 弹飞绵羊 [分块][LCT]
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(LCT)
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在 他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装 ...
- [bzoj2002][Hnoi2010]Bounce弹飞绵羊——分块
Brief description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装 ...
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【分块】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 这一题除了LCT解法,还有一种更巧妙,代码量更少的解法,就是分块.先想,如果仅仅记录每 ...
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊——分块
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 第一次用分块,感觉超方便啊: 如果记录每个点的弹力系数,那么是O(1)修改O(n)查询 ...
随机推荐
- 使用JDBC 插入向数据库插入对象
package com.ctl.util; import java.io.IOException; import java.lang.reflect.Field; import java.lang.r ...
- 2016/05/25 Ajax 跨域 转
起因: 起因是这样的,为了复用,减少重复开发,单独开发了一个用户权限管理系统,共其他系统获取认证与授权信息,暂且称之为A系统:调用A系统以B为例.在B系统 中用ajax调用A系统系统的接口(数据格式为 ...
- Linux中的mysql.redis
1,Linux上的mysql MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源 ...
- HDU 5044 Tree 树链剖分+区间标记
Tree Problem Description You are given a tree (an acyclic undirected connected graph) with N nodes. ...
- tcp state
[root@hadoop1 log]# netstatActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Addres ...
- XMU 1611 刘备闯三国之卖草鞋 【贪心】
1611: 刘备闯三国之卖草鞋 Time Limit: 1000 MS Memory Limit: 64 MBSubmit: 90 Solved: 48[Submit][Status][Web B ...
- 织梦首页TAG标签页的仿制
1,tag标签的作用:主要是为了能够使得用户可以更加精确的找寻到自己所需内容.这种TAG搜索方式,比分类搜索更加的精确.具体以及节省时间. 2,怎么能够合理的优化TAG标签? A:明白网站的TAG标签 ...
- jsp实现翻页功能
jsp实现翻页功能 要实现翻页功能,只需要设置一个pageIndex即可,然后每次加载页面时通过pageIndex去加载数据就行. 那么我们可以设置一个隐藏的input框,用于传递pageIndex给 ...
- settings.xml 文件配置
Maven 远程中央仓库:repo1.maven.org 通过 ping repo1.maven.org 查看该网络是否可以连接访问: 1. 设置代理 Plugin org.apache.maven. ...
- AutoIT: FileReadLine可以对文件进行读行操作
$fHandle= ) Then $line= FileReadLine($fHandle) Then ExitLoop Wend EndIf FileClose($fHandle)