正题

题目链接:https://www.luogu.com.cn/problem/U136336?contestId=36038


题目大意

第iii次找到第iii大的数字位置xix_ixi​并且翻转[i,xi][i,x_i][i,xi​],求输出序列xxx


解题思路

记录一下每个排名在SplaySplaySplay中的位置,然后暴力翻转即可。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n,root,t[N][2],val[N],p[N],siz[N],fa[N],r[N];
bool Direct(int x)
{return t[fa[x]][1]==x;}
void Connect(int x,int y,int dir)
{t[x][dir]=y;fa[y]=x;return;}
void PushUp(int x)
{siz[x]=siz[t[x][0]]+siz[t[x][1]]+1;return;}
void rev(int x){swap(t[x][0],t[x][1]);r[x]^=1;return;
}
void PushDown(int x){if(!r[x])return;rev(t[x][0]);rev(t[x][1]);r[x]=0;return;
}
void Rotate(int x){PushDown(fa[x]);PushDown(x);int y=fa[x],z=fa[y];int xs=Direct(x),ys=Direct(y);Connect(y,t[x][xs^1],xs); Connect(x,y,xs^1);Connect(z,x,ys);PushUp(y);PushUp(x);return;
}
void Downdata(int x){if(!x)return;Downdata(fa[x]);PushDown(x);return;
}
void Splay(int x,int z){Downdata(x);while(fa[x]!=z){int y=fa[x];if(fa[y]==z)Rotate(x);else if(Direct(x)==Direct(y))Rotate(y),Rotate(x);else Rotate(x),Rotate(x);}if(!z)root=x;return;
}
int rk(int x){Splay(x,0);return siz[t[x][0]];
}
int find(int x,int k){PushDown(x);if(k<=siz[t[x][0]])return find(t[x][0],k);if(siz[t[x][0]]+1==k)return x;return find(t[x][1],k-siz[t[x][0]]-1);
}
bool cmp(int x,int y){if(val[x+1]==val[y+1])return x<y;return val[x+1]<val[y+1];
}
void print(int x){if(!x)return;print(t[x][0]);printf("%d ",val[x]);print(t[x][1]);
}
int main()
{freopen("31.in","r",stdin);freopen("data.out","w",stdout);scanf("%d",&n);siz[1]=1;for(int i=2;i<=n+1;i++){scanf("%d",&val[i]);t[i][0]=i-1;fa[i-1]=i;p[i-1]=i-1;PushUp(i);}sort(p+1,p+1+n,cmp);t[n+2][0]=n+1;fa[n+1]=n+2;PushUp(n+2);root=n+2;for(int i=1;i<=n;i++){int w=rk(p[i]+1);printf("%d ",w);
//      print(root);putchar('\n');int x=find(root,i),y=find(root,w+2);Splay(x,0);Splay(y,x); rev(t[y][0]);
//      print(root);putchar('\n');}return 0;
}

[2020.10.25NOIP模拟赛]序列【Splay】相关推荐

  1. 2020/10/31模拟赛

    CSP第二轮前模拟赛 我太菜了 T1 题目描述 奶牛们对围栏的高度非常敏感.奶牛希望围栏高度既不太矮以至于他们没有安全感,也不太高以至于她们看不见围栏外的天地.所以每头奶牛都有自己喜欢的高度.奶牛有N ...

  2. [2020.11.25NOIP模拟赛]出租车【dp】

    正题 题面链接:https://www.luogu.com.cn/problem/U142298?contestId=37766 题目大意 nnn个人有起点和终点,按顺序上车,但下车可以任意顺序,车最 ...

  3. [2020.10.30NOIP模拟赛]小鱼吃大鱼【RMQ】

    正题 题目大意 nnn个数,求一对(i,j)(i,j)(i,j)要求最大化max{ai,aj}%min{ai,aj}max\{a_i,a_j\}\% min\{a_i,a_j\}max{ai​,aj​ ...

  4. [2020.10.30NOIP模拟赛]字符串水题【SA,树状数组】

    正题 题目大意 一个字符串SSS. 若干个询问,每次询问一个串TTT和l,rl,rl,r.询问有多少个TTT和SSS的公共子串满足和为[l,r][l,r][l,r] 解题思路 考虑枚举子串左端,那么右 ...

  5. [2020.11.25NOIP模拟赛]下棋【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/U142297?contestId=37766 题目大意 nnn个白棋mmm个黑棋排成一排,要求没有任何一段黑白棋的个 ...

  6. 2020.03.18模拟赛17(第二题)

    2.[GDKOI训练]音乐节拍(mnotes) 题目描述 FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000)种音节组成,编号为1到N,而且一定按照从1到N的顺序进行弹奏, ...

  7. 2020.03.18模拟赛17(第三题)

    3.[GDKOI训练]电视游戏问题(vidgame) 题目描述 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是 ...

  8. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  9. 2020.03.11模拟赛15(第一题)

    1.水果盛宴(fruit) 题目描述 贝茜又再一次地闯入了 Farmer John 的房子!她在厨房发现了一堆柠檬和一堆橘子(每堆都有无限多个),并且,她希望尽可能地多吃. 贝茜的有一个饱腹值上限 T ...

最新文章

  1. SCN Headroom与时光倒流到1988年的Oracle数据库
  2. pandas基本数据处理
  3. 一文看懂深度学习——人工智能系列学习笔记
  4. 使用EF.Core将同一模型映射到多个表
  5. day5 JavaEE实战班
  6. 怎么把竖线去掉_3小时完成一个logo设计,我是怎么做到的?
  7. 分拆素数和【筛选法】
  8. 计算机网络 第七版【谢希仁】部分答案(第1~7章)【附:电子书】
  9. 设计模式微课版来啦——《设计模式(第2版)》
  10. 1 常用邮箱SMTP/POP3地址及端口
  11. 5G 与 WIFI6 的对比
  12. Win10管理员用户被禁用,无法登陆系统
  13. layui.laydate默认当前时间时分秒
  14. 二手苹果手机哪个性价比高?
  15. win10 可以复制但无法粘贴的问题
  16. NPM problem: npm ERR! extraneous
  17. 学生信息统计(顺序表)
  18. 一个完整的大作业:80电影天堂网站
  19. 基于SSH超市积分管理系统(附论文)
  20. 我的第一个C#程序-智能拼图游戏

热门文章

  1. qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
  2. centos 重启网卡_CentOS7网络配置和修改网卡名称及常用服务管理命令
  3. mysql 设置宽松模式_mysql5.6 sql_mode设置为宽松模式
  4. db2 删除存储过程_蚂蚁金服OceanBase挑战TPCC | TPCC基准测试之存储优化
  5. java类结构工具_java类层次结构图工具
  6. 数据结构与算法--简单栈实现及其应用
  7. python如何引用txt_如何使用pip requirements.txt文件安装python模块附加组件
  8. icoding复习3
  9. er图转为数据流程图_「数据架构」实体关系模型介绍
  10. /usr/lib/sudo/sudoers.so must be only be writable by owner