国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

BZOJ 3223, 文藝平衡樹

2019-11-11 04:22:28
字體:
供稿:網(wǎng)友

PRoblem

傳送門

Mean

編寫一個支持對數(shù)列進行翻轉(zhuǎn)子串操作的數(shù)據(jù)結(jié)構(gòu)。

Analysis

Splay裸題。 只需要支持翻轉(zhuǎn)操作即可。 輸出數(shù)列時一個一個查詢就是了……

Code

#include<cstdio>const int N=100005;int n,m,o,x,y,cnt,a[N],val[N],f[N],sz[N],son[N][2];bool rev[N];void swap(int &x,int &y){int z=x;x=y;y=z;}void revl(int x){if(!x) return;swap(son[x][0],son[x][1]);rev[x]^=1;}void read(int &x){ char c; while((c=getchar())<'0' || c>'9'); x=c-'0'; while((c=getchar())>='0' && c<='9') x=x*10+c-'0';}void pb(int x){ if(rev[x]){ revl(son[x][0]); revl(son[x][1]); rev[x]=0; }}void up(int x){ int l=son[x][0],r=son[x][1]; sz[x]=sz[l]+sz[r]+1;}int build(int l,int r,int fa){ int x=++cnt,mid=l+r>>1; f[x]=fa,val[x]=mid; if(l<mid) son[x][0]=build(l,mid-1,x); if(r>mid) son[x][1]=build(mid+1,r,x); up(x); return x;}int kth(int k){ int x=o,tmp; while(1){ pb(x); tmp=sz[son[x][0]]+1; if(tmp==k) return x; if(tmp>k) x=son[x][0]; else k-=tmp,x=son[x][1]; }}void rotate(int x){ int y=f[x],w=son[y][1]==x; son[y][w]=son[x][w^1]; if(son[x][w^1]) f[son[x][w^1]]=y; if(f[y]) son[f[y]][son[f[y]][1]==y]=x; f[x]=f[y],son[x][w^1]=y,f[y]=x; up(y);}void splay(int x,int w){ int s=1,i=x,y;a[1]=x; while(f[i]) a[++s]=i=f[i]; while(s) pb(a[s--]); while(f[x]!=w){ y=f[x]; if(f[y]!=w){if((son[f[y]][0]==y)^(son[y][0]==x)) rotate(x);else rotate(y);} rotate(x); } if(!w) o=x; up(x);}int main(){ read(n),read(m); o=build(0,n+1,0); while(m--){ read(x),read(y); x=kth(x),y=kth(y+2); splay(x,0),splay(y,x); revl(son[y][0]); up(y),up(x); } for(int i=2;i<=n;i++) printf("%d ",val[kth(i)]); printf("%d",val[kth(n+1)]); return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄山市| 宝兴县| 昭苏县| 西乡县| 淮滨县| 宁安市| 措美县| 浮梁县| 临西县| 龙泉市| 松滋市| 南乐县| 云梦县| 毕节市| 乐安县| 曲阜市| 梅州市| 娄底市| 夏津县| 清苑县| 陆河县| 绥德县| 和田县| 五大连池市| 科技| 开江县| 伊金霍洛旗| 丰原市| 包头市| 余姚市| 丽水市| 台安县| 五常市| 洛扎县| 兴山县| 大方县| 临洮县| 凤阳县| 方城县| 泽库县| 十堰市|