正题

题目链接:https://ac.nowcoder.com/acm/contest/7865/G


题目大意

nnn个数从1∼n1\sim n1∼n,mmm次拿出其中一段放到头部,求最终序列。


解题思路

用SplaySplaySplay拿出一段区间然后丢到头部就好了。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n,m,root,siz[N],fa[N],val[N],t[N][2];
void PushUp(int x)
{siz[x]=siz[t[x][0]]+siz[t[x][1]]+1;return;}
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 Rotate(int x){int y=fa[x],z=fa[fa[x]];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 Splay(int x,int f){while(fa[x]!=f){int up=fa[x];if(fa[up]==f)Rotate(x);else if(Direct(x)==Direct(up))Rotate(up),Rotate(x);else Rotate(x),Rotate(x);}if(!f)root=x;return;
}
int Find(int x,int k){if(siz[t[x][0]]>=k)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);
}
void Write(int x){if(!x)return;Write(t[x][0]);if(val[x])printf("%d ",val[x]);Write(t[x][1]);
}
int main()
{scanf("%d%d",&n,&m);siz[1]=1;for(int i=2;i<=n+1;i++){val[i]=i-1;fa[i-1]=i;t[i][0]=i-1;PushUp(i);}t[n+2][0]=n+1;fa[n+1]=n+2;PushUp(n+2);root=n+2; for(int i=1;i<=m;i++){int l,r,x,y,tmp;scanf("%d%d",&l,&r);r=l+r-1;x=Find(root,l);y=Find(root,r+2);Splay(x,0);Splay(y,x);tmp=t[y][0];t[y][0]=0;fa[tmp]=0;PushUp(y);x=Find(root,1);y=Find(root,2);Splay(x,0);Splay(y,x);t[y][0]=tmp;fa[tmp]=y;Splay(tmp,0);root=tmp;}Write(root);
}

2020牛客国庆集训派对day8G-Shuffle Cards【Splay】相关推荐

  1. 2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树)

    2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树) 题目 https://ac.nowcoder.com/acm/contest/7865/G ...

  2. 2020牛客国庆集训派对day2 补题J

    2020牛客国庆集训派对day2 补题J:VIRUS OUTBREAK 题目描述 The State Veterinary Services Department recently reported ...

  3. 2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列)

    2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列) 题目 https://ac.nowcoder.com/acm/contest/7830/I 题意 给你n个点,问 ...

  4. 2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题)

    2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题) 题目 https://ac.nowcoder.com/acm/contest/7818/H 题意 这题目真的太难读懂了,赛后 ...

  5. 2020牛客国庆集训派对day1 A.ABB

    2020牛客国庆集训派对day1 A.ABB 题目链接 题目描述 Fernando was hired by the University of Waterloo to finish a develo ...

  6. 2020牛客国庆集训派对day8

    牛客网链接 文章目录 Easy Chess 题意: 题解: Easy Problemset 题意 题解: Shuffle Cards 题解: Diff-prime Pairs 题意 题解: 代码: E ...

  7. 2020牛客国庆集训派对day2 F题 Java大数处理

    题目: 链接:https://ac.nowcoder.com/acm/contest/16913/F 来源:牛客网 The following code snippet calculates the ...

  8. 2020牛客国庆集训派对day4 Arithmetic Progressions

    Arithmetic Progressions 链接:https://ac.nowcoder.com/acm/contest/7831/B 来源:牛客网 题目描述 An arithmetic prog ...

  9. 2020牛客国庆集训派对day3 Leftbest

    Leftbest 链接:https://ac.nowcoder.com/acm/contest/7830/A 来源:牛客网 题目描述 Jack is worried about being singl ...

  10. 2020牛客国庆集训派对day2 AKU NEGARAKU

    来源:牛客网: 题目描述 1st Academy is an international leadership training academy based in Kuala Lumpur. Ever ...

最新文章

  1. LockSupport的源码实现原理以及应用
  2. 拥抱开源, Office 365开发迎来新时代
  3. 阿里云能耗宝发布,助力中小企业绿色升级,参与碳中和万亿市场
  4. android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
  5. 十分钟,我搞定了一个人物检测模型
  6. Confluence 6 使用电子邮件可见
  7. MyBatis学习--高级映射
  8. [渝粤教育] 中国地质大学 计算机系统结构(新) 复习题 (2)
  9. 让惊艳无处不在 Win7桌面便签操作技巧
  10. Python:用类与对象写一元二次方程计算器中遇到的错误
  11. Android 补间动画之平移动画TranslateAnimation
  12. php报修小程序,微信小程序报修管理系统
  13. e430c参数 thinkpad,联想ThinkPad E430c的详细参数
  14. Eclipse 设置护眼背景色
  15. 【数学模拟卷总结】2022李林四套卷数学二第四套
  16. Android AT command
  17. 从论文中导出参考文献至EndNote
  18. Java 后端工程师 2018 书单推荐
  19. JDBC:JDBC工具类JDBCUtils
  20. 计算机病毒辽师大教案,四年级下信息技术教案计算机病毒知识二辽师大版.docx...

热门文章

  1. pythonlive2d_Unity-Live2D资源载入
  2. 树莓派能直接运行python程序_树莓派怎么运行python程序
  3. python input输入多个变量_「Python 秘籍」1.2 解压可迭代对象赋值给多个变量
  4. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数
  5. python如何安装扩展库openpyxl和numpy_Python第三方库之openpyxl(2)
  6. html图片分开,webpack单独分离打包css,css里引用的图片路径错误,怎么解决?
  7. linux自动跑批,在linux中添加硬盘并在系统启动时自动挂载
  8. php文件上传实验总结,53 PHP文件处理(六)文件上传--总结---细说php
  9. python拼图游戏_乐趣无穷的Python课堂
  10. mongorepository查询条件_MongoRepository实现增删改查和复杂查询【支持的查询类型】...