P3203 [HNOI2010]弹飞绵羊

LCT板子

用一个$p[i]$数组维护每个点指向的下个点。

每次修改时cut*1+link*1就解决了

被弹出界时新设一个点,权为0,作为终点表示出界点。其他点点权为1。

然后统计一下路径就好辣

注意点的编号从0开始

#include<cstdio>
inline void Swap(int &a,int &b){a^=b^=a^=b;}
#define N 200005
int n,m,ch[N][],fa[N],s[N],rev[N],p[N];
#define lc ch[x][0]
#define rc ch[x][1]
inline bool nrt(int x){return ch[fa[x]][]==x||ch[fa[x]][]==x;}
inline void up(int x){s[x]=s[lc]+s[rc]+;}
inline void Rev(int x){Swap(lc,rc);rev[x]^=;}
inline void down(int x){if(rev[x]) Rev(lc),Rev(rc),rev[x]=;}
void pre(int x){if(nrt(x))pre(fa[x]); down(x);}
void turn(int x){
int y=fa[x],z=fa[y],l=(ch[y][]==x),r=l^;
if(nrt(y)) ch[z][ch[z][]==y]=x;
fa[ch[x][r]]=y ;fa[y]=x; fa[x]=z;
ch[y][l]=ch[x][r]; ch[x][r]=y;
up(y); up(x);
}
inline void splay(int x){
pre(x);
for(;nrt(x);turn(x)){
int y=fa[x],z=fa[y];
if(nrt(y)) turn(((ch[y][]==x)^(ch[z][]==y))?x:y);
}
}
inline void access(int x){for(int y=;x;y=x,x=fa[x])splay(x),rc=y,up(x);}
inline void makert(int x){access(x);splay(x);Rev(x);}
inline int find(int x){
access(x);splay(x);down(x);
while(lc) x=lc,down(x);
splay(x); return x;
}
inline void link(int x,int y){makert(x); if(find(y)!=x)fa[x]=y;}
inline void cut(int x,int y){
makert(x);
if(find(y)==x&&fa[y]==x&&!ch[y][]) fa[y]=rc=,up(x);
}
inline void split(int x,int y){makert(x);access(y);splay(y);}
int main(){
scanf("%d",&n); int q1,q2,q3;
for(int i=;i<=n;++i){
scanf("%d",&p[i]);
p[i]=p[i]+i>n ? n+:p[i]+i;
link(i,p[i]);
}
scanf("%d",&m);
while(m--){
scanf("%d%d",&q1,&q2);++q2;
if(q1==) split(n+,q2),printf("%d\n",s[q2]-);
else{
cut(q2,p[q2]);
scanf("%d",&q3);
p[q2]=q2+q3>n?n+:q2+q3;
link(q2,p[q2]);
}
}return ;
}

最新文章

  1. tomcat 7.0 之文件配置
  2. js生成二维码实例(真实有效)
  3. prim算法java版
  4. Apache Options Indexes FollowSymLinks之讲解
  5. Asp.net中实现同一用户名同时登陆,注销先前用户(转)
  6. (08)DBA写给开发的索引经验
  7. hdu_5695_Gym Class(拓扑排序)
  8. Framework7首页隐藏navbar其他页面显示navbar
  9. mybatis No enum const class org.apache.ibatis.type.JdbcType.Integer
  10. PHPstorm远程连接侧边栏怎么打开,远程数据库侧边栏怎么打开
  11. svn仓库迁移
  12. gei 操作
  13. 服务器tail输出正常,vim打开中文乱码
  14. 不要再说我简历上Java项目都好low!【offer收割机必备】
  15. sql server 无法sa登录解决办法
  16. 接口(interface)与多态
  17. A KeyValuePair in Java
  18. win10企业版永久激活2017怎么用
  19. 第八章&#160;高级搜索树 (xa2)红黑树:结构
  20. iphone“连接到icloud是出错”的可能原因

热门文章

  1. 【Java】-NO.17.EBook.4.Java.1.014-【疯狂Java讲义第3版 李刚】- Annotation
  2. componentsSeparatedByString 的注意事项
  3. nginx 长连接keeplive
  4. Entity Framework学习初级篇1--EF基本概况《转》
  5. Amber TUTORIAL B1: Simulating a DNA polyA-polyT Decamer
  6. Bukkit插件编程中.yml配置文件的创建和读取
  7. caffe训练模型中断的解决办法(利用solverstate)
  8. c#Lock学习笔记
  9. sql server2012 远程访问设置(转)
  10. javascript(一):javascript基本介绍及基本语法