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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Treap的板子

發布時間:2025/4/16 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Treap的板子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【普通平衡樹】

1 #include<cstdio> 2 #include<cstdlib> 3 #include<cctype> 4 #include<cstring> 5 #include<cmath> 6 #include<ctime> 7 using namespace std; 8 template<typename T>T read(){ 9 char c=getchar();int x=0,f=1; 10 for(;!isdigit(c);c=getchar())if(c=='-')f=-1; 11 for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48); 12 return x*f; 13 } 14 const int maxn=100010; 15 namespace Treap{ 16 int num; 17 struct Node{ 18 int data,key,sz; 19 int ls,rs; 20 Node(){}; 21 Node(int data,int key,int sz,int ls=0,int rs=0): 22 data(data),key(key),sz(sz),ls(ls),rs(rs){}; 23 }T[maxn]; 24 void pushup(int x){ 25 T[x].sz=T[T[x].ls].sz+T[T[x].rs].sz+1; 26 } 27 int newnode(int x){ 28 T[++num]=Node(x,rand(),1); 29 return num; 30 } 31 int merge(int x,int y){ 32 if(!x||!y)return x+y; 33 if(T[x].key<T[y].key){ 34 T[x].rs=merge(T[x].rs,y); 35 pushup(x); 36 return x; 37 } 38 else{ 39 T[y].ls=merge(x,T[y].ls); 40 pushup(y); 41 return y; 42 } 43 } 44 void split(int now,int k,int &x,int &y){ 45 if(!now){x=y=0;return;} 46 47 if(T[now].data<=k)x=now,split(T[now].rs,k,T[now].rs,y); 48 else y=now,split(T[now].ls,k,x,T[now].ls); 49 pushup(now); 50 } 51 int kth(int now,int k){ 52 while(1){ 53 if(k<=T[T[now].ls].sz)now=T[now].ls; 54 else if(k==T[T[now].ls].sz+1)return now; 55 else k-=T[T[now].ls].sz+1,now=T[now].rs; 56 } 57 } 58 } 59 using namespace Treap; 60 int main(){ 61 srand(time(0)); 62 for(int n=read<int>()+1,rt=0,x,y,z;--n;){ 63 int op=read<int>(),a=read<int>(); 64 if(op==1){ 65 split(rt,a,x,y); 66 rt=merge(merge(x,newnode(a)),y); 67 } 68 else if(op==2){ 69 split(rt,a,x,z);split(x,a-1,x,y); 70 y=merge(T[y].ls,T[y].rs); 71 rt=merge(merge(x,y),z); 72 } 73 else if(op==3){ 74 split(rt,a-1,x,y); 75 printf("%d\n",T[x].sz+1); 76 rt=merge(x,y); 77 } 78 else if(op==4)printf("%d\n",T[kth(rt,a)].data); 79 else if(op==5){ 80 split(rt,a-1,x,y); 81 printf("%d\n",T[kth(x,T[x].sz)].data); 82 rt=merge(x,y); 83 } 84 else if(op==6){ 85 split(rt,a,x,y); 86 printf("%d\n",T[kth(y,1)].data); 87 rt=merge(x,y); 88 } 89 } 90 return 0; 91 }

【文藝平衡樹】

#include<bits/stdc++.h> using namespace std; const int maxn=100010; struct node{node *ch[2];int data,key,sz,flip;int siz(int x){if(ch[x]!=NULL)return ch[x]->sz;else return 0;}void pushdown(){if(flip){flip=0;swap(ch[0],ch[1]);if(ch[0]!=NULL)ch[0]->flip^=1;if(ch[1]!=NULL)ch[1]->flip^=1;}}void maintain(){sz=1+siz(0)+siz(1);} }*root; typedef pair<node*,node*> droot; node *merge(node *a,node *b){if(a==NULL)return b;if(b==NULL)return a;a->pushdown();b->pushdown();if(a->key<b->key){a->ch[1]=merge(a->ch[1],b);a->maintain();return a;}else{b->ch[0]=merge(a,b->ch[0]);b->maintain();return b;} } droot split(node *a,int k){if(a==NULL)return droot(NULL,NULL);droot ret;a->pushdown();if(a->siz(0)>=k){ret=split(a->ch[0],k);a->ch[0]=ret.second;a->maintain();ret.second=a;}else{ret=split(a->ch[1],k-a->siz(0)-1);a->ch[1]=ret.first;a->maintain();ret.first=a;}return ret; } void insert(int x){node *t=new node;t->data=x;t->key=rand();t->sz=1;t->flip=0;t->ch[0]=t->ch[1]=NULL;root=merge(root,t); } void output(node *o){if(!o)return;o->pushdown();if(o->ch[0])output(o->ch[0]);printf("%d ",o->data);if(o->ch[1])output(o->ch[1]); } int n,m; int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;++i)insert(i);for(int a,b;m--;){scanf("%d%d",&a,&b);--a;--b;droot s=split(root,a);droot t=split(s.second,b-a+1);t.first->flip^=1;root=merge(merge(s.first,t.first),t.second);}output(root);return 0; }

?

轉載于:https://www.cnblogs.com/ndqzhang1111/p/11317384.html

總結

以上是生活随笔為你收集整理的Treap的板子的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 美女啪啪国产 | 亚洲精品一区在线观看 | 国产又粗又猛 | 中国女人和老外的毛片 | 亚洲欧美第一 | 一区精品视频 | 国产网站免费观看 | 青青艹在线观看 | 国产精品高潮呻吟久久久 | 亚洲天堂网在线观看 | 国产日韩欧美一区二区东京热 | 日本黄xxxxxxxxx100| 少妇高潮迭起 | 久久高清无码视频 | 久久久久久久久久久综合 | 欧美日韩一区电影 | 精品不卡一区二区三区 | free性满足hd国产精品久 | 日韩国产免费 | 不卡中文字幕在线观看 | 日韩精品无码一区二区三区久久久 | 日韩精品视频在线 | 午夜电影天堂 | 国内成人精品视频 | 国产激情免费视频 | a视频| 四虎精品在线播放 | 99自拍偷拍 | 国产乱码一区二区 | 玖玖zyz | 色播基地 | 色婷婷综合久久久久中文一区二区 | 成人av18| 96av在线视频 | 欧美日韩在线播放 | 91直接看| 日本黄色xxx | 一级黄色电影片 | 777奇米色| 午夜两性视频 | 黄视频在线观看免费 | 日韩精选av| 91精品视频在线播放 | 九色.com| 一区二区av | 亚洲人做受 | 国产99精品 | 欧美丰满一区二区免费视频 | 亚洲AV无码成人国产精品色 | 欧美在线免费观看视频 | 国产青青 | 污污视频网站免费观看 | 国产特黄一级片 | 天天摸天天干 | 中文字幕高清在线观看 | 日韩高清av | 欧美黑人xxx | 日日好av | 玖玖爱精品 | 天堂√在线 | 岛国精品资源网站 | 亚洲欧洲日韩在线 | 麻豆综合 | 香蕉视频在线播放 | 亚洲第8页 | 青青草手机视频在线观看 | 久久嫩草精品久久久久 | caoporen在线 | 欧美黄色录像片 | 成年人激情网站 | 国产三区四区视频 | 免费观看国产精品视频 | ww欧美| 小泽玛利亚一区二区三区视频 | 国产香蕉一区 | 网站色 | 姐姐的秘密韩剧免费观看全集中文 | 日日噜噜噜夜夜爽爽狠狠 | 日日夜夜撸撸 | 乱子伦视频在线看 | 夜夜操夜夜骑 | 重囗味sm一区二区三区 | 羞羞漫画在线 | 欧美www.| 午夜888| 美女乱淫 | 日本美女久久久 | 伊人久久久久噜噜噜亚洲熟女综合 | 五月天激情丁香 | 长河落日电视连续剧免费观看01 | 成av人片一区二区三区久久 | 欧美熟妇一区二区 | 精品人妻一区二区三区浪潮在线 | 国产高清网站 | 国内自拍视频在线播放 | www.三级 | 欧美性大战久久久久久久 | 国产精品久久久免费视频 | 日韩精品一区二区av |