LCT access完了一定splay再用!!!

悲伤= =

LCT裸题 把调出去设虚点n+1即可

//Love and Freedom.
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 200010
#define ls(x) t[x].son[0]
#define rs(x) t[x].son[1]
#define fa(x) t[x].fa
#define nroot(x) (ls(fa(x))==x||rs(fa(x))==x)
using namespace std; struct node
{
int sz,fa,son[2]; bool rev;
}t[N]; void pushup(int x)
{
t[x].sz = t[ls(x)].sz + t[rs(x)].sz + 1;
} void rotate(int x)
{
if(!x||!nroot(x)) return;
int f = fa(x),gf = fa(f);
int k = (rs(f) == x), p = k^1;
if(nroot(f)) t[gf].son[rs(gf)==f] = x;
t[x].fa = gf; t[f].fa = x;
if(t[x].son[p]) t[t[x].son[p]].fa = f;
t[f].son[k] = t[x].son[p];
t[x].son[p] = f;
pushup(f); pushup(x);
} void pushdown(int x)
{
if(!x || !t[x].rev) return;
swap(ls(x),rs(x));
if(ls(x)) t[ls(x)].rev^=1;
if(rs(x)) t[rs(x)].rev^=1;
t[x].rev^=1;
} void push(int x)
{
if(nroot(x)) push(fa(x));
pushdown(x);
} void splay(int x)
{
push(x);
while(nroot(x))
{
int f = fa(x), gf = fa(f);
if(nroot(gf))
(rs(f)==x)^(rs(gf)==f)?rotate(x):rotate(f);
rotate(x);
}
pushup(x);
} void access(int x)
{
int y = 0;
do
{
//printf("%d\n",x);
splay(x);
t[x].son[1] = y;
pushup(x);
y = x; x = t[x].fa;
}while(x);
} void makeroot(int x)
{
access(x); splay(x); t[x].rev=1;// pushdown(x);
} void link(int x,int y)
{
makeroot(x); t[x].fa = y;
} void cut(int x,int y)
{
makeroot(y); access(x); splay(x);
//printf("%d %d\n",t[y].sz,rs(y));
if(t[x].sz == 2 && ls(x) == y)
t[x].son[0] = 0, t[y].fa = 0,pushup(x);
}
int k[N];
int main()
{
int n,x,y,opt,m;
scanf("%d",&n);
for(int i=1;i<=n+1;i++) t[i].sz=1;
for(int i=1;i<=n;i++)
{
scanf("%d",&k[i]);
if(i+k[i]>n) link(i,n+1);
else link(i,i+k[i]);
}
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&opt,&x);
//for(int j=1;j<=n+1;j++)
// printf("%d ",t[j].fa);
//printf("\n");
x++;
if(opt==1)
{
makeroot(n+1);
//printf("MMP\n");
//for(int j=1;j<=n+1;j++)
// printf("%d ",t[j].fa);
access(x); splay(x);
//printf("%d %d\n",ls(5),rs(5));
printf("%d\n",t[x].sz-1);
}
else
{
scanf("%d",&y);
cut(x,x+k[x]>n?n+1:x+k[x]);
k[x] = y;
link(x,x+k[x]>n?n+1:x+k[x]);
}
}
return 0;
}

BZOJ2002 [HNOI2010] 弹飞绵羊的更多相关文章

  1. BZOJ2002[Hnoi2010]弹飞绵羊——LCT

    题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系 ...

  2. 【BZOJ2002】弹飞绵羊(Link-Cut Tree)

    [BZOJ2002]弹飞绵羊(Link-Cut Tree) 题面 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lost ...

  3. P3203 [HNOI2010]弹飞绵羊(LCT)

    P3203 [HNOI2010]弹飞绵羊 LCT板子 用一个$p[i]$数组维护每个点指向的下个点. 每次修改时cut*1+link*1就解决了 被弹出界时新设一个点,权为0,作为终点表示出界点.其他 ...

  4. [HNOI2010] 弹飞绵羊 (分块)

    [HNOI2010] 弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上 ...

  5. 洛谷 P3203 [HNOI2010]弹飞绵羊 解题报告

    P3203 [HNOI2010]弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一 ...

  6. [BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree)

    [BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree) 题面 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一 ...

  7. 「洛谷P3202」[HNOI2010]弹飞绵羊 解题报告

    P3203 [HNOI2010]弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一 ...

  8. [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)

    题面 传送门:洛谷 Solution 这题其实是有类似模型的. 我们先考虑不修改怎么写.考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了).题目所 ...

  9. 【codevs2333】&【BZOJ2002】弹飞绵羊[HNOI2010](分块)

    我其实是在codevs上看到它的题号后才去做这道题的...2333... 题目传送门:codevs:http://codevs.cn/problem/2333/ bzoj:http://www.lyd ...

随机推荐

  1. Promise和async/await

    1.promise对象 promise 对象有三种状态:pending(进行中).fulfilled(已成功)和 rejected(已失败).promise 对象的状态改变,只有两种可能:从 pend ...

  2. jsp选择文件夹上传

    文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...

  3. BZOJ 4407: 于神之怒加强版 莫比乌斯反演 + 线筛积性函数

    Description 给下N,M,K.求     Input 输入有多组数据,输入数据的第一行两个正整数T,K,代表有T组数据,K的意义如上所示,下面第二行到第T+1行,每行为两个正整数N,M,其意 ...

  4. POJ 2502 Subway ( 最短路 && 最短路建图 )

    题意 : 给出二维平面上的两个点代表起点以及终点,接下来给出若干条地铁线路,除了在地铁线路上行进的速度为 40km/h 其余的点到点间都只能用过步行且其速度为 10km/h ,现问你从起点到终点的最短 ...

  5. 关于Reporting Services网站

    1.http://www.c-sharpcorner.com/search/sql%20server%20reporting%20services 2.https://msdn.microsoft.c ...

  6. Xcode编辑器之快捷键的使用

    一,快捷键图标 图标 键盘 ⌘ Command ⌃ Control ⌥ Option ⇧ Shift 二, 常用快捷键 文件快捷键 快捷键 键盘  描述 ⌘N  command + N 新文件 ⇧⌘N ...

  7. 20180705-Java对象和类

    Java对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态继承封装抽象类对象实例方法消息解析 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个 ...

  8. 实现word在线预览 有php的写法 也有插件似

    <?php //header("Content-type:text/html;charset=utf-8"); //word转html 展示 $lj=$_GET['file' ...

  9. Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)

    一.登录MySQL查看用SHOW VARIABLES LIKE 'character%';下字符集,显示如下: +--------------------------+---------------- ...

  10. JavaScript .filter() 方法全解析

    .filter是一个内置的数组迭代方法,它接受一个"谓词(译者注: 指代一个过滤条件的函数)",该"谓词"针对每个值进行调用,并返回一个符合该条件(" ...