bzoj2002
来源:互联网 发布:c一维数组排序算法 编辑:程序博客网 时间:2024/05/29 14:56
lct 练手题
(谁说用的那个叫splay 明明spaly
/************************************************************** Problem: 2002 User: leijp Language: C++ Result: Accepted Time:1432 ms Memory:4908 kb****************************************************************/ #include <cstdio> int n,m,k[200010]; int pre[200010],sz[200010],ch[200010][2];bool rt[200010]; int read_int () { char c = getchar(); int re = 0; for(;c > '9' || c < '0'; c = getchar()); for(;c >= '0' && c <= '9';c = getchar()) re = re * 10 + c - '0'; return re;} void pu (int u) { sz[u] = sz[ch[u][0]] + sz[ch[u][1]] + 1;} void rot (int u,int d) { //pre ch sz rt ch[pre[u]][d ^ 1] = ch[u][d]; if(ch[u][d]) pre[ch[u][d]] = pre[u]; ch[u][d] = pre[u]; int t = pre[pre[u]]; pre[pre[u]] = u; pre[u] = t; if(!rt[ch[u][d]]) { if(t) { if(ch[t][0] == ch[u][d]) ch[t][0] = u; else ch[t][1] = u; } } pu(ch[u][d]); pu(u); if(rt[ch[u][d]]) { rt[ch[u][d]] = 0; rt[u] = 1; }} void splay (int u) { while(!rt[u]) { if(rt[pre[u]]) { if(ch[pre[u]][0] == u) rot(u,1); else rot(u,0); } else { int d = ch[pre[pre[u]]][0] == pre[u]; if(ch[pre[u]][d] == u) { rot(u,d ^ 1); rot(u,d); } else { rot(u,d); rot(u,d); } } }} void acc (int u) { int v = 0; for(;u;u = pre[v = u]) { splay(u); if(ch[u][1]) { rt[ch[u][1]] = 1; pre[ch[u][1]] = u; } rt[ch[u][1] = v] = 0; pu(u); }} int main () { n = read_int(); for(int i = 1;i <= n;++i) { k[i] = read_int(); if(i + k[i] <= n) pre[i] = i + k[i]; rt[i] = 1; sz[i] = 1; } m = read_int(); for(int i = 1;i <= m;++i) { int op = read_int(); int p = read_int() + 1; acc(p); splay(p); if(op == 1) printf("%d\n",sz[ch[p][0]] + 1); else { k[p] = read_int(); if(ch[p][0]) { rt[ch[p][0]] = 1; pre[ch[p][0]] = pre[p]; ch[p][0] = 0; } if(p + k[p] > n) pre[p] = 0; else pre[p] = p + k[p]; pu(p); } }}
0 0
- bzoj2002
- bzoj2002
- bzoj2002
- bzoj2002
- bzoj2002
- bzoj2002 LCT
- 分块 bzoj2002
- BZOJ2002弹飞绵羊
- 【bzoj2002】弹飞绵羊
- bzoj2002 弹飞绵羊
- 【BZOJ2002】弹飞绵羊
- bzoj2002 弹飞绵羊
- [bzoj2002]弹飞绵羊
- BZOJ2002弹飞绵羊
- bzoj2002弹飞绵羊
- 【BZOJ2002】弹飞绵羊
- 【bzoj2002】弹飞绵羊
- bzoj2002(lct)
- windows程序设计(第五版)笔记-001
- python 二进制,十进制,十六进制
- 配置Ceph为openstack后端
- 浮点数的理解和BigDecimal的使用
- 关于符号位扩展你又知道多少
- bzoj2002
- iOS9 中不支持http
- 我对递归的认识
- MySQL 常用日期和时间处理函数
- iTerm2 快捷键
- 密码学(2)-古典密码学
- DotNet中StringBuilder和String的区别
- 数据结构实现之索引优先队列用例(多路归并)
- Ceph安装