bzoj2002 [ HNOI2010 ] -- LCT
2018-06-17 23:11:42来源:未知 阅读 ()
考虑建一棵树,对于一个点i,如果i+ki<=n,将i+ki作为它的父亲。那么答案就是这个点的深度。
由于有修改操作,用LCT维护这棵树,每个修改操作改变父节点就可以了。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define N 200010 6 int i,j,k,n,m,T,f[N],ch[N][2],s[N],x,y; 7 bool b[N]; 8 inline char nc(){ 9 static char buf[100000],*p1=buf,*p2=buf; 10 if(p1==p2){ 11 p2=(p1=buf)+fread(buf,1,100000,stdin); 12 if(p1==p2)return EOF; 13 } 14 return *p1++; 15 } 16 inline void Read(int& x){ 17 char c=nc(); 18 for(;c<'0'||c>'9';c=nc()); 19 for(x=0;c>='0'&&c<='9';x=(x<<3)+(x<<1)+c-48,c=nc()); 20 } 21 inline void Pushup(int x){s[x]=s[ch[x][0]]+s[ch[x][1]]+1;} 22 inline int Get(int x){return x==ch[f[x]][1];} 23 inline void Rotate(int x){ 24 bool d=Get(x);int y=f[x]; 25 if(b[y])b[y]=0,b[x]=1;else ch[f[y]][Get(y)]=x; 26 ch[y][d]=ch[x][d^1];f[ch[y][d]]=y; 27 ch[x][d^1]=y;f[x]=f[y];f[y]=x; 28 Pushup(y); 29 } 30 inline void Splay(int x){ 31 for(;!b[x];Rotate(x)) 32 if(!b[f[x]])Rotate(Get(x)==Get(f[x])?f[x]:x); 33 Pushup(x); 34 } 35 inline void Access(int x){ 36 int y=0; 37 while(x){ 38 Splay(x); 39 b[ch[x][1]]=1;b[y]=0; 40 ch[x][1]=y;Pushup(x); 41 y=x;x=f[x]; 42 } 43 } 44 inline void Link(int x,int y){ 45 Access(y);Splay(y); 46 f[ch[y][0]]=0;b[ch[y][0]]=1; 47 ch[y][0]=0;f[y]=x; 48 Pushup(y); 49 } 50 inline void Update(int x,int y){if(x+y>n)Link(0,x);else Link(x+y,x);} 51 inline int Query(int x){Access(x);Splay(x);return s[ch[x][0]]+1;} 52 char S[30]; 53 int Len; 54 inline void Print(int x){ 55 for(Len=0;x;x/=10)S[++Len]=x%10; 56 for(;Len;)putchar(S[Len--]+48);putchar('\n'); 57 } 58 int main() 59 { 60 Read(n); 61 for(i=1;i<=n;i++)b[i]=s[i]=1; 62 for(i=1;i<=n;i++){ 63 Read(x); 64 if(i+x<=n)Link(i+x,i); 65 } 66 Read(T); 67 while(T--){ 68 Read(k); 69 if(k==1)Read(x),Print(Query(x+1));else Read(x),Read(y),Update(x+1,y); 70 } 71 return 0; 72 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:基于控制台的四则运算
下一篇:变量交换
- P3205 [HNOI2010]合唱队 2019-08-26
- BZOJ3669: [Noi2014]魔法森林(瓶颈生成树 LCT) 2018-07-09
- bzoj2049 [ SDOI2008 ] -- LCT 2018-06-17
- bzoj2843 -- LCT 2018-06-17
- bzoj2631 -- LCT 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash