随笔分类 -  数据结构——平衡树

摘要:treap。树是以“优先级”(优先级越小,在书架上越靠上)形成的,堆是以rand()的权值形成的。还要再维护一个原编号。 置顶/置底:找到那个元素,把它拉出来修改优先级再塞回去。 insert:即一个元素和他“附近”的元素交换位置,把他们两个拉出来,交换优先级再塞回去 cpp include inc 阅读全文
posted @ 2018-01-30 09:44 poorpool 阅读(152) 评论(0) 推荐(0)
摘要:先满足挑剔的 cpp include include include include using namespace std; typedef long long ll; int n, m, tmp, rot, cnt; ll ans; struct Cow{ int pri, gre; }cow[ 阅读全文
posted @ 2018-01-30 08:04 poorpool 阅读(205) 评论(0) 推荐(0)
摘要:treap水过 cpp include include include using namespace std; int n, uu, rot, cnt, sum=0, ans1, ans2; const int oo=2147483647; struct Treap{ int val[35005] 阅读全文
posted @ 2018-01-29 15:04 poorpool 阅读(141) 评论(0) 推荐(0)
摘要:treap 阅读全文
posted @ 2017-12-15 20:09 poorpool 阅读(122) 评论(0) 推荐(0)
摘要:先是维修数列 题解看 "这里" ,但是我写的跑得很慢 下面是poj的,稍加改动即可ac洛谷。 如果想看题意分析及讲解请看 "这里" ,讲得很好,一下就让我明白splay维护区间了。 splay的价值在于维护区间,如果只是维护点的话完全可以用treap等平衡树代替 阅读全文
posted @ 2017-12-15 17:05 poorpool 阅读(231) 评论(3) 推荐(0)
摘要:treap求中位数。 cpp include include include using namespace std; typedef long long ll; int n, m, rot, siz, uu, vv; ll h[1005], all, num, tmp, ans[1005][100 阅读全文
posted @ 2017-12-04 21:40 poorpool 阅读(171) 评论(0) 推荐(0)
摘要:并查集+treap维护的第k 大 数 cpp include include include using namespace std; struct Node{ int val, l, r, rnd, sze, hav; }nd[200005]; int n, m, fa[200005], hmn[ 阅读全文
posted @ 2017-12-04 20:15 poorpool 阅读(225) 评论(0) 推荐(0)
摘要:treap做法,参考 "hzwer的博客" splay做法,参照 "zyf2000" ,但是一般我们用splay都是维护区间的 阅读全文
posted @ 2017-12-04 18:52 poorpool 阅读(198) 评论(0) 推荐(0)