treap
文章平均质量分 86
DraZxlNDdt
这个作者很懒,什么都没留下…
展开
-
[Codevs][1296][营业额统计]
原题地址 模板题,就不说了,相信做了前面几道题就会这个了。。。就找一找前驱和后继嘛。。。。 注意一个点:这里一个数的“前驱”和“后继”应包括那个数本身。[因为数据中有重复的数,我用bitset判重会re,不知是不是因为毒瘤数据。。。] 强上代码 : #include #include #include #include #include #include #incl原创 2016-03-25 12:47:10 · 584 阅读 · 0 评论 -
[CodeVs][1514][Treap][书架]
这道题我全网就看到了一个treap,QAQ 这道题有个难题,他每次是对一个编号的书进行操作,如果是对从左到右的一个排名的书进行操作还好办..... 因此在网上一位大神的代码帮助下,我发现,可以在外界对每一个书的编号搞一个指针,然后用get_rank函数来求出这本书的排名,然后就很好搞了。。。 get_rank 怎么写呢? 我们将当前节点往父亲爬,如果当前节点是原创 2016-03-31 21:17:16 · 893 阅读 · 0 评论 -
[Apio2012][Treap]派遣
原题地址 题意:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大。 现在有三种做法原创 2016-03-31 22:01:54 · 928 阅读 · 0 评论 -
Treap
作为蒟蒻的我一直觉得平衡树很高端,便从treap学起。。。。【为了省选?】 treap , 顾名思义 tree + heap.... 为了学它我先写了一份普通的二叉排序树(定义就不说了) #include #include #include #include #include #include const int N = 5e5+7; int n,a[N]; int Ran原创 2016-03-22 08:03:27 · 1120 阅读 · 4 评论 -
[noi2005][treap]序列维护
这道题能用辣鸡度搜出来的treap做法只有两三篇吧,并且没有详解。。。 先看数据范围,本蒟蒻感觉nlogn过不了啊。。。 [主要是我是大常数选手] 其实可以勉强过, 跪烂了那些只跑1s多的神犇%%% 首先,四百万次的插入,如果你每次都申请一个新的空间,肯定是要MLE的。 我们注意到数列中最多只有五十万个元素,也就是说我们最多同时用到五十万个空间。那么可以这样处理:维原创 2016-04-03 19:24:09 · 906 阅读 · 0 评论 -
bzoj 3224,tyvj 1728普通平衡树
原题地址 这道题涵盖了平衡树的基本操作。。。 先关注操作三,它指出要输出最小的排名,因此我们可以将重复的元素存在一个节点内,代码实现很简单。。。 插入操作已讲。。。 那么怎样删除呢? 首先我们找到被删的点,如果它是重复的(该元素还剩很多个),那么就把个数减一即可。 否则我们可以采用像堆的方式,将这个元素通过旋转不断地下移。。。 问题来了,下移的时候是选择左旋还是右旋呢原创 2016-03-22 15:21:25 · 1006 阅读 · 0 评论 -
[noi 2004] 郁闷的出纳员
原题地址 花了一两天真正的熟悉了Treap,对于一个东西,本蒟蒻认为,不应该要会,还应会熟练的写,【像哈狗写这个只需十分钟】 好吧,话归正题 先推荐另类解法 戳进去 此题解法很多BIT , 权值线段树 ,各种平衡树(准备抽空写)。。。。 是一道很棒的模板题。 这道题我们把每次全体加的工资和减的弄到一个变量,姑且叫为w,把当前操作的数叫为k,当我们加原创 2016-03-23 21:56:01 · 844 阅读 · 0 评论 -
[洛谷][P1503][鬼子进村][Treap]
原题地址 题意就不解释了吧。 看到这道题,一开始YY把所有点加进treap里面,然后完全跟着操作走,应该是可做的。[在treap里面找连续的一段应该很简单,只要有一定代码能力都行|||||||吧。。。。] 可不幸的因为本人太弱,不想写,就不得不YY其它的做法,我们可以发现,被困士兵能通过的房子组成的序列的两个端点为被毁灭的两个房屋。[左端点有可能为零,即最左端,右端点可能为原创 2016-03-24 19:13:20 · 927 阅读 · 0 评论