多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > POJ 1442 Black Box treap求區間第k大

POJ 1442 Black Box treap求區間第k大

來源:程序員人生   發布時間:2014-09-09 05:20:08 閱讀次數:3449次

題目來源:POJ 1442 Black Box

題意:輸入xi 輸出前xi個數的第i大的數

思路:試了下自己的treap模版

#include <cstdio> #include <cstring> #include <cstdlib> #include <ctime> using namespace std; struct Node { Node *ch[2]; int r; int v; int s; Node(){} Node(int v): v(v) { ch[0] = ch[1] = NULL; r = rand(); s = 1; } bool operator < (const Node& rhs) const{ return r < rhs.r; } int cmp(int x) const{ if(x == v) return -1; return x < v ? 0 : 1; } void maintain(){ s = 1; if(ch[0] != NULL) s += ch[0]->s; if(ch[1] != NULL) s += ch[1]->s; } }; void rotate(Node* &o, int d){ Node* k = o->ch[d^1]; o->ch[d^1] = k->ch[d]; k->ch[d] = o; o->maintain(); k->maintain(); o = k; } void insert(Node* &o, int x){ if(o == NULL){ o = new Node(x); } else{ int d = (x < o->v ? 0 : 1); insert(o->ch[d], x); if((o->ch[d]->r) > (o->r)) rotate(o, d^1); } o->maintain(); } void remove(Node* &o, int x){ int d= o->cmp(x); if(d == -1){ Node* u = o; if(o->ch[0] != NULL && o->ch[1] != NULL){ int d2 = (o->ch[0] > o->ch[1] ? 1 : 0); rotate(o, d2); remove(o->ch[d2], x); } else{ if(o->ch[0] == NULL) o = o->ch[1]; else o = o->ch[0]; delete u; } } else remove(o->ch[d], x); if(o != NULL) o->maintain(); } int kth(Node* o, int k){ if(o == NULL || k <= 0 || k > o->s) return 0; int s = (o->ch[0] == NULL ? 0 : o->ch[0]->s); if(k == s+1) return o->v; else if(k <= s) return kth(o->ch[0], k); else return kth(o->ch[1], k-s-1); } void removetree(Node* &x){ if(x->ch[0] != NULL) removetree(x->ch[0]); if(x->ch[1] != NULL) removetree(x->ch[1]); delete x; x = NULL; } int n, m, a[30010]; Node *rt = NULL; int main() { while(scanf("%d %d", &n, &m) != EOF) { srand(time(0)); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); int l = 1; for(int i = 1; i <= m; i++) { int x; scanf("%d", &x); while(l <= x) { insert(rt, a[l]); l++; } printf("%d ", kth(rt, i)); } //removetree(rt); } return 0; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 娇小老少配xxxxx性视频 | jizz性欧美3 jizz亚洲 | 国产主播福利在线 | 国产精品国产三级国产专不∫ | 亚洲精品中文字幕乱码三区 | 爱爱欧美在线观看视频 | 日本一区二区三区精品国产 | 免费jizz在在线播放国产 | 黑人巨大xxx | ppypp日本欧美一区二区 | 香蕉视频在线网站 | 国产淫片 | 欧美日韩在线观看视频 | 乌克兰鲜嫩xxxx | 日本三级s级在线播放 | 久久亚洲人成网站 | 老妇毛片久久久久久久久 | 欧美特级黄色 | 一级毛片在线观看视频 | 高清中文字幕视频在线播 | 欧美日本在线一区二区三区 | 91亚洲欧美综合高清在线 | 清纯唯美亚洲综合五月天 | 欧美人与动性行为另类 | 痴女在线播放免费视频 | 久久亚洲一级α片 | 免费高清不卡毛片在线看 | 天啦噜tianlalu精品视频 | 国产福利视频一区二区三区四区 | 欧美xxxx三人交性视频 | 亚洲精品高清久久 | 伊人久久大香线蕉综合亚洲 | 国产日韩精品欧美一区视频 | japan色系videos强行 | 亚洲一区二区三区免费视频 | 国产精品久久久久久麻豆一区 | 亚洲小视频在线 | 国产精品11页| 2020亚洲天堂 | 丝袜无内写真福利视频 | 国产日本欧美在线观看乱码 |