[HNOI2010]BOUNCE 弹飞绵羊

思路:

  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的更多相关文章

  1. [BZOJ2002][洛谷P3203][Hnoi2010]Bounce 弹飞绵羊(LCT维护链长)

    luogu传送门 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 16082  Solved:  ...

  2. bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊 動態樹

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 4055  Solved: 2172[Submi ...

  3. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 【分块】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 ...

  4. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 9071  Solved: 4652[Submi ...

  5. 【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]]即为答 ...

  6. 【bzoj2002】[Hnoi2010]Bounce 弹飞绵羊 分块

    [bzoj2002][Hnoi2010]Bounce 弹飞绵羊 2014年7月30日8101 Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀 ...

  7. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...

  8. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 LCT

    2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...

  9. bzoj 2002 : [Hnoi2010]Bounce 弹飞绵羊 (LCT)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 题面: 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: ...

随机推荐

  1. Hadoop及Zookeeper+HBase完全分布式集群部署

    Hadoop及HBase集群部署 一. 集群环境 系统版本 虚拟机:内存 16G CPU 双核心 系统: CentOS-7 64位 系统下载地址: http://124.202.164.6/files ...

  2. mysql绿色版安装,多实例安装

    1.为什么要装多个mysql多实例? 关于这个的原因,我目前了解为建立一个主数据库,一个或者多个从库,实现一主多从或者主从复制的目的. 2.设么是mysql的多实例? MySQL多实例就是在一台机器上 ...

  3. HDU5154拓扑排序

    Harry and Magical Computer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  4. 获取Web.Config中节点的值

    读取webconfig里面的appSetting和connectionString <appSettings> <add key="SiteURL" value= ...

  5. Mabatis(2) 全局配置文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC & ...

  6. Git版本回退的最佳方式

    使用git开发的过程中,存在误提交的时候怎么办呢?不用慌张,强大的git提供了两种版本回退的方式,可以让你恢复提交之前的内容: 方式一:reset(不推荐) 通过reset的方式,把head指针指向之 ...

  7. Divergent Change(发散式变化)---要重构的信号

    “ 当你看着一个类说,呃,如果新加入一个数据库,我必须修改这三个函数:如果新出现一种金融工具,我必须修改这四个函数.那么,此时也许将这个类分成两个会更好,这么一来每个对象就可以只因一种变化而需要修改. ...

  8. 取(m堆)石子游戏 HDU2176(Nim博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2176 题目: Problem Description m堆石子,两人轮流取.只能在1堆中取.取完者胜. ...

  9. 联系博主 Contact

    李莫 / Ray OI 蒟蒻一只 / A Player of Olympiad in Informatics QQ:740929894 邮箱 / Email :rayking2017@outlook. ...

  10. HTML跳转新窗口的方法

    笔试遇到这样的一个问题,特意整理一下. 方法一 纯HTML <a href="http://www.cnblogs.com" target="_blank" ...