亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

|算法討論|平衡樹 學習筆記

2019-11-14 10:55:04
字體:
來源:轉載
供稿:網友

平衡樹:Treap,Splay,Set

Treap,Splay實現名次樹:BZOJ 3224 普通平衡樹

#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define ms(i,j) memset(i,j, sizeof i); using namespace std; struct node{ node *ch[2];//左右孩子 int v, r;//值,優先級 int s;//附加值:以當前節點為根的結點數量 int w;//附加值:和當前節點相同值的結點數 void mt() { s = w; if (ch[0]!=NULL) s += ch[0]->s; if (ch[1]!=NULL) s += ch[1]->s; } };int ans;struct treap{ node *root; void rotate(int d, node *&o)//d=0則左旋 d=1則右旋 { node *k = o->ch[d^1]; o->ch[d^1] = k->ch[d]; k->ch[d] = o; o->mt(); k->mt(); o = k; } void insert(int x, node *&o)//插入一個數 { if (o==NULL) { o = new node(); o->v = x; o->r = rand(); o->s = o->w = 1; o->ch[0] = o->ch[1] = NULL; //初值 } else if (o->v==x) o->w++; //有相同直接w++ else { int d = (x < o->v ? 0 : 1); insert(x, o->ch[d]); if (o->ch[d]->r > o->r) rotate(d^1, o); } o->mt(); } void del(int x, node *&o)//刪除一個數 { int d = (x < o->v ? 0 : 1); if (o->v==x)//找到 { if (o->w>1) {o->w--; o->s--;} else//不止一個數就直接w--,s-- if (o->ch[0]==NULL) o = o->ch[1]; else if (o->ch[1]==NULL) o = o->ch[0]; else { int d2 = (o->ch[0]->r > o->ch[1]->r ? 1 : 0); rotate(d2,o); del(x, o->ch[d2]); } } else { del(x, o->ch[d]); } if (o!=NULL) o->mt(); } int rank(int x, node *o)//求x的排名 { int tmp; if (o->ch[0]==NULL) tmp = 0; else tmp=o->ch[0]->s;//求s if (o->v==x) return tmp+1;//找到了 else if (o->v >x) return rank(x,o->ch[0]); else return tmp+o->w+rank(x,o->ch[1]); } int kth(int k, node *o)//求第k小 { if (o==NULL||o->s<k||k<=0) return -1;//不符合要求 int tmp; if (o->ch[0]==NULL) tmp = 0; else tmp = o->ch[0]->s;//求s if (k<=tmp) return kth(k,o->ch[0]); else if (k > tmp+o->w) return kth(k - tmp - o->w,o->ch[1]); else return o->v;//找到了 } void PRed(int x, node *o)//求前驅 { if(o==NULL)return; if(o->v<x) { ans = o->v; pred(x, o->ch[1]); } else pred(x, o->ch[0]); } void succ(int x, node *o)//求后繼 { if(o==NULL)return; if(o->v>x) { ans = o->v; succ(x, o->ch[0]); } else succ(x, o->ch[1]); }};treap tree;int n;int main() { scanf("%d", &n); int opt,x; for (int i=1;i<=n;i++) { scanf("%d%d", &opt, &x); switch(opt) { case 1: tree.insert(x, tree.root); break; case 2: tree.del(x, tree.root); break; case 3: printf("%d/n", tree.rank(x, tree.root)); break; case 4: printf("%d/n", tree.kth(x, tree.root)); break; case 5: tree.pred(x,tree.root); printf("%d/n", ans); break; case 6: tree.succ(x,tree.root); printf("%d/n", ans); break; } } return 0; }

Set求大于x的最小值:BZOJ 2028[SHOI2009]會場預約

#include<cstdio> #include<algorithm> #include<cstring> #include<set> #define ms(i,j) memset(i,j, sizeof i); using namespace std; int n; struct qj { int l, r; bool Operator <(const qj &b) const { if (r<b.r) return true; if (r>b.r) return false; return l<b.l; }};set<qj> s; char inpu(){ char ans = getchar(); while ((ans!='A')&&(ans!='B')) ans = getchar(); return ans;}int main() { scanf("%d", &n); for (int i=1;i<=n;i++) { char type = inpu(); if (type=='A') { int cnt = 0; int l,r; scanf("%d%d", &l, &r); qj a = (qj){l,r}; while (true) { set<qj>::iterator it = s.lower_bound((qj){0,l});//找第一個比a大的qj int xl = it->l, xr = it->r; if (it!=s.end())//set里還有元素 { if (!(a.r < it->l))//有覆蓋 { s.erase(it); cnt++; continue; } } s.insert(a); break; } printf("%d/n", cnt); } else printf("%d/n", s.size()); } return 0; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩免费在线观看| 日韩国产在线看| 欧美制服第一页| 亚洲精品国产精品自产a区红杏吧| 色噜噜狠狠狠综合曰曰曰| 国产z一区二区三区| 狠狠久久五月精品中文字幕| 欧美激情精品久久久久| 中文字幕亚洲国产| 韩剧1988在线观看免费完整版| 久久久精品美女| 亚洲精品动漫100p| 久久精品国产2020观看福利| 久久久久久久久久久网站| 亚洲第一福利网| 成人黄色免费在线观看| 欧美日韩不卡合集视频| 国产精品2018| 91九色视频导航| 国产精品视频公开费视频| 日韩欧美a级成人黄色| 日韩69视频在线观看| 欧美在线日韩在线| 久久夜色精品亚洲噜噜国产mv| 欧美成人激情视频| 日韩欧美视频一区二区三区| 91日本视频在线| 精品国产精品三级精品av网址| 成人天堂噜噜噜| 国产欧美一区二区三区在线看| 中文字幕亚洲欧美一区二区三区| 国产日韩精品综合网站| 最好看的2019年中文视频| 18性欧美xxxⅹ性满足| 欧美一区二区三区图| 国产精品99久久久久久www| 久久久久国产视频| 一区二区在线免费视频| 欧美中文在线免费| 国产综合久久久久| 国产精品黄色影片导航在线观看| 亚洲成人黄色网址| 91啪国产在线| 国内自拍欧美激情| 精品偷拍各种wc美女嘘嘘| 色综合久久悠悠| 国产欧美日韩中文字幕在线| 欧美一级大片在线观看| 国产99在线|中文| 4438全国亚洲精品在线观看视频| 亚洲三级 欧美三级| 亚洲三级免费看| 91精品国产91久久久久久不卡| 日本欧美一级片| 日韩欧美国产中文字幕| 国产精品偷伦一区二区| 久久的精品视频| 欧美性xxxx极品hd满灌| 欧美日韩国产在线播放| 日韩高清av一区二区三区| 久久精品视频在线播放| 操91在线视频| 人人做人人澡人人爽欧美| 欧美激情综合色| 欧美性高跟鞋xxxxhd| 奇米四色中文综合久久| 亚洲精品免费av| 亚洲高清免费观看高清完整版| 午夜美女久久久久爽久久| 亚洲欧美日韩天堂| 91高清视频免费观看| 日韩欧美精品在线观看| 国产精品极品美女粉嫩高清在线| 国产精品黄色影片导航在线观看| 日韩欧美中文字幕在线播放| 91精品国产91久久久久久最新| 国产亚洲成av人片在线观看桃| 亚洲欧美制服第一页| 亚洲第一精品电影| 欧美一级淫片丝袜脚交| 国产精品久久久999| 日韩成人激情视频| 日韩av快播网址| 国产精品欧美一区二区| 国产99久久久欧美黑人| 久久久久久国产精品三级玉女聊斋| 欧美性高跟鞋xxxxhd| 国产999在线| 欧美精品在线观看91| 亚洲free性xxxx护士hd| 激情成人中文字幕| 亚洲丝袜一区在线| 欧美午夜美女看片| 亚洲香蕉av在线一区二区三区| 亚洲三级黄色在线观看| xxxxx成人.com| 亚洲色图13p| 5278欧美一区二区三区| 欧美大尺度在线观看| 欧美理论电影在线观看| 亚洲欧美成人网| 国产成人精品久久二区二区91| 欧美国产乱视频| 国产亚洲a∨片在线观看| 日韩在线观看网站| 精品日本美女福利在线观看| 精品成人av一区| 欧美精品激情在线观看| 亚洲免费电影在线观看| 国产欧美精品一区二区三区介绍| 久久亚洲欧美日韩精品专区| 亚洲精品久久久久中文字幕欢迎你| 成人妇女淫片aaaa视频| 国产日产亚洲精品| 在线精品国产欧美| 国产精品久久久久9999| 久久免费视频网站| 欧美在线一区二区三区四| 国内精品久久久久久| 美女性感视频久久久| 亚洲摸下面视频| 日韩av在线网址| 亚洲精品日韩激情在线电影| 国产日韩中文在线| 欧美电影免费在线观看| 欧美激情精品在线| 视频在线一区二区| 精品美女久久久久久免费| 日日骚久久av| 亚洲黄色成人网| 激情成人中文字幕| 欧美激情在线播放| 亚洲精品一区中文字幕乱码| 久久成人这里只有精品| 欧美特级www| 国产精品永久免费在线| 欧美成人全部免费| 欧美一区深夜视频| 亚洲综合在线做性| 97婷婷大伊香蕉精品视频| 精品亚洲一区二区三区在线播放| 色综合天天狠天天透天天伊人| 尤物九九久久国产精品的分类| 精品国产91久久久久久| 成人精品视频久久久久| 亚洲国产欧美精品| 日韩中文理论片| 精品国产网站地址| 97高清免费视频| 国产亚洲欧美另类中文| 国产亚洲精品91在线| 亚洲成人免费在线视频| 国产日韩欧美在线视频观看| 久久久国产精彩视频美女艺术照福利| 久久久久久久久电影| 欧美一级黑人aaaaaaa做受| 国产精品黄色影片导航在线观看| 久久乐国产精品| 国产日韩在线亚洲字幕中文| 91久久在线播放| 日韩美女视频中文字幕| 91福利视频在线观看| 日本高清+成人网在线观看| 精品久久久久久久久久久久久|