博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3165 [CQOI2014]排序机械臂
阅读量:6801 次
发布时间:2019-06-26

本文共 1851 字,大约阅读时间需要 6 分钟。

就是说要维护一个数据结构资瓷区间反转和查询第\(K\)大,那么splay吧

我们可以把原数组按高度为第一关键字,下标为第二关键字排序,然后直接建出splay
这样的话每次第\(K\)大直接查询编号然后把它转到根节点,那么左子树大小+1就是下标了,区间反转打标记就好了

//minamoto#include
#define R register#define inf 0x3f3f3f3f#define fp(i,a,b) for(R int i=a,I=b+1;i
I;--i)#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)using namespace std;char buf[1<<21],*p1=buf,*p2=buf;inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}int read(){ R int res,f=1;R char ch; while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1); for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0'); return res*f;}char sr[1<<21],z[20];int C=-1,Z=0;inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}void print(R int x){ if(C>1<<20)Ot();if(x<0)sr[++C]='-',x=-x; while(z[++Z]=x%10+48,x/=10); while(sr[++C]=z[Z],--Z);sr[++C]=' ';}const int N=1e5+5;struct node{ int id,k; friend bool operator <(const node &a,const node &b){return a.k==b.k?a.id
r)return;R int mid=(l+r)>>1; ch[fat][mid>fat]=mid,sz[mid]=1,fa[mid]=fat; if(l==r)return;build(l,mid-1,mid),build(mid+1,r,mid); upd(mid);}int Kth(int x){ int now=rt; while(true){ pd(now); if(ch[now][0]&&x<=sz[ch[now][0]])now=ch[now][0]; else{ x-=sz[ch[now][0]]+1; if(!x)return now; now=ch[now][1]; } }}int main(){// freopen("testdata.in","r",stdin); n=read();fp(i,2,n+1)a[i].k=read(),a[i].id=i; a[1].id=1,a[1].k=-inf,a[n+2].id=n+2,a[n+2].k=inf; sort(a+1,a+n+3),build(1,n+2,0),rt=(n+3)>>1; fp(i,2,n){ splay(a[i].id,0),ans=sz[ch[rt][0]]+1; print(ans-1),xx=Kth(i-1),yy=Kth(ans+1); splay(xx,0),splay(yy,xx); tag[ch[ch[rt][1]][0]]^=1; }print(n);return Ot(),0;}

转载于:https://www.cnblogs.com/bztMinamoto/p/10078567.html

你可能感兴趣的文章
我的Android进阶之旅------>FastJson的简介
查看>>
mm_camera_sock
查看>>
cmscp实例笔记
查看>>
grayscale实现全站及局部变黑的效果 – 兼容IE/FF等浏览器
查看>>
数据结构-集合
查看>>
java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
查看>>
淘宝对接(一)
查看>>
[数据结构]二叉树创建与遍历
查看>>
CentOS 6.4 下安装 Apache
查看>>
MySQL 5.6.26几种安装包的区别
查看>>
前端005/React生命周期
查看>>
admin组件详解
查看>>
001:为什么需要虚拟环境
查看>>
实验二 201521450040马霞
查看>>
C# 禁止windows程序重复运行的两种基本方法
查看>>
django 查询
查看>>
IPC——消息队列
查看>>
metamask源码学习-metamask-controller.js
查看>>
Alpha冲刺(八)
查看>>
nginx vim 单行删除与多行删除
查看>>