日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)

發布時間:2025/7/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用一棵Splay按名次維護每個點,其中一個節點對應初始編號連續的一段區間,這樣總節點數是$O(m)$的。

對每個編號記錄這個點被Splay的那個節點維護,用std::map存儲,只記錄被修改的點。

每次刪除時將一個點分裂成[l,k-1],k,[k+1,r]三個點(特判k=l或k=r),再刪除k。

注意各種細節。

1 #include<map> 2 #include<cstdio> 3 #include<algorithm> 4 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 5 using namespace std; 6 7 const int N=400010; 8 int n,m,rt,nd,ans,op,x,y,L[N],R[N],len[N],f[N],ch[N][2]; 9 map<int,int>mp; 10 11 int get(int l,int r){ nd++; L[nd]=l; R[nd]=r; len[nd]=r-l+1; return nd; } 12 void upd(int x){ len[x]=len[ch[x][0]]+len[ch[x][1]]+R[x]-L[x]+1; } 13 14 void rot(int &rt,int x){ 15 int y=f[x],z=f[y],w=ch[y][1]==x; 16 if (rt==y) rt=x; else ch[z][ch[z][1]==y]=x; 17 f[x]=z; f[y]=x; f[ch[x][w^1]]=y; 18 ch[y][w]=ch[x][w^1]; ch[x][w^1]=y; upd(y); 19 } 20 21 void splay(int &rt,int x){ 22 while (x!=rt){ 23 int y=f[x],z=f[y]; 24 if (y!=rt) ((ch[z][0]==y)^(ch[y][0]==x)) ? rot(rt,x) : rot(rt,y); 25 rot(rt,x); 26 } 27 upd(x); 28 } 29 30 int split(int x,int k){ 31 int y=get(k+1,R[x]); R[x]=k; 32 if (!ch[x][1]) ch[x][1]=y,f[y]=x; 33 else{ 34 int s=ch[x][1]; 35 while (ch[s][0]) s=ch[s][0]; 36 ch[s][0]=y; f[y]=s; 37 } 38 splay(rt,y); mp[R[x]]=x; mp[R[y]]=y; return y; 39 } 40 41 void Split(int &x,int k){ 42 if (k<R[x]) split(x,k); 43 if (k>L[x]) x=split(x,k-1); 44 splay(rt,x); 45 } 46 47 void ins1(int x){ 48 int s=rt; 49 while (ch[s][0]) s=ch[s][0]; 50 ch[s][0]=x; f[x]=s; splay(rt,x); 51 } 52 53 void ins2(int x){ 54 int s=rt; 55 while (ch[s][1]) s=ch[s][1]; 56 ch[s][1]=x; f[x]=s; splay(rt,x); 57 } 58 59 void del(int x){ 60 splay(rt,x); 61 int ls=ch[x][0],rs=ch[x][1]; 62 f[ls]=f[rs]=0; ch[x][0]=ch[x][1]=0; 63 if (!ls || !rs) { rt=ls+rs; return; } 64 int s=ls; while (ch[s][1]) s=ch[s][1]; 65 splay(ls,s); ch[s][1]=rs; f[rs]=rt=s; upd(s); 66 } 67 68 int find(int k){ 69 for (int x=rt; ; ){ 70 if (k<=len[ch[x][0]]) x=ch[x][0]; 71 else{ 72 k-=len[ch[x][0]]; 73 if (k<=R[x]-L[x]+1) return k+L[x]-1; 74 else k-=R[x]-L[x]+1,x=ch[x][1]; 75 } 76 } 77 } 78 79 int main(){ 80 freopen("bzoj3595.in","r",stdin); 81 freopen("bzoj3595.out","w",stdout); 82 scanf("%d%d",&n,&m); rt=get(1,n); mp[n]=1; 83 rep(i,1,m){ 84 scanf("%d%d",&op,&x); x-=ans; 85 if (op==1){ 86 scanf("%d",&y); y-=ans; 87 int t=mp.lower_bound(x)->second; 88 Split(t,x); printf("%d\n",ans=len[t]-len[ch[t][1]]); 89 L[t]=R[t]=y; mp[y]=t; 90 } 91 if (op==2){ 92 int t=mp.lower_bound(x)->second; 93 Split(t,x); printf("%d\n",ans=len[t]-len[ch[t][1]]); 94 del(t); ins1(t); 95 } 96 if (op==3){ 97 int t=mp.lower_bound(x)->second; 98 Split(t,x); printf("%d\n",ans=len[t]-len[ch[t][1]]); 99 del(t); ins2(t); 100 } 101 if (op==4) printf("%d\n",ans=find(x)); 102 } 103 return 0; 104 }

?

轉載于:https://www.cnblogs.com/HocRiser/p/10192306.html

總結

以上是生活随笔為你收集整理的[BZOJ3595][SCOI2014]方伯伯的OJ(裂点Splay)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本一区二区三区在线免费观看 | a一级免费视频 | 在线网站av | 成人网站免费观看入口 | 99热3| 超碰成人免费在线 | 国产精品69久久久久孕妇欧美 | 日本五十路在线 | 五月天婷婷导航 | 国产精品久久久久久免费观看 | 高潮无码精品色欲av午夜福利 | 男人把女人捅爽 | av最新| 成熟了的熟妇毛茸茸 | x88av视频 | 欧美美女爱爱视频 | 久草国产视频 | 五月婷婷六月香 | 26uuu精品一区二区在线观看 | 久久一视频 | 日韩午夜小视频 | 国产一级片中文字幕 | 欧美一区二区三区激情啪啪 | 99福利网| 日本中文字幕不卡 | 长篇高h肉爽文丝袜 | www.色偷偷 | 最新日韩在线 | 青青草手机视频在线观看 | 2021天天操| 在线视频免费观看 | 天天做天天躁天天躁 | 久久偷看各类女兵18女厕嘘嘘 | 中文字幕影片免费在线观看 | 久久久久久无码精品人妻一区二区 | 亚洲天堂免费在线 | 欧美精品hd | 色哟哟精品观看 | 欧美色图自拍 | 99久久精品国产毛片 | 亚洲在线观看视频 | 久久影视av | 亚洲天堂毛片 | 国产三级做爰高清在线 | www.av在线 | 欧美脚交 | 午夜插插 | 未满十八岁勿进 | 嫩草免费视频 | 久久黑人| 中文字幕被公侵犯的漂亮人妻 | 深爱激情五月婷婷 | 91精品人妻一区二区三区四区 | 亚洲成人免费网站 | 深爱激情综合 | 亚洲午夜av久久乱码 | 久久高清国产 | 国产中文一区 | wwww在线观看 | 人人插人人爽 | 人人干人人爱 | 一级做a爰片毛片 | 日本三级吃奶头添泬 | 国产成人精品无码高潮 | 欧美特级一级片 | 黄网在线观看视频 | 日本少妇aaa | 成人av电影天堂 | 久久黄色大片 | 久久久永久久久人妻精品麻豆 | 97爱爱| 极品久久久久 | 欧美老女人性视频 | 4438五月天 | 极品少妇xxxx精品少妇 | 欧美在线播放 | 国产小视频你懂的 | 不卡av中文字幕 | 日韩高清在线一区 | 在线观看黄色小视频 | 97超碰在| 免费成人高清在线视频 | 色之久久综合 | 一区二区三区日韩精品 | 人妻少妇久久中文字幕 | 国产专区av | 精品国产乱码久久久久久浪潮 | 好吊操这里有精品 | 久久综合鬼色 | 精品麻豆av | 亚洲av成人精品午夜一区二区 | 被各种性器调教到哭vk | 免费黄网在线观看 | 黑丝袜av | 99久久精品国产一区二区三区 | 寡妇激情做爰呻吟 | 国产一区二区三区四区五区美女 | 日韩大片av| 欧美日韩毛片 |