
平衡树
Chester_King
虽千万人,吾往矣。
展开
-
【BZOJ】1112 [POI2008]砖块Klo 平衡树
题目传送门今天一晚上就做了一道题,好颓废啊……这题其实还挺水的,只不过本蒟蒻一直都不太想的进去,所以一直WA,一直懵逼。其实这题的题意是在n个数中连续取k个,把这k个数都改成一个相同的数m,使得Σabs(a[i]-m)最小。很显然,当m为当前k个数的中位数时,当前k个数的改动最小。至于为什么,我也不知道……然后我们就可以把这题转化为一个滑动窗口的题目,总共有n-k+1个窗口,求原创 2017-07-04 21:27:39 · 336 阅读 · 4 评论 -
【BZOJ】3506 [Cerc2007]robotic sort Splay
题目传送门这好像是两天前的题目了……一直都忘记写blog了……其实这题就是一道序列翻转+求区间最小值的位置,直接splay维护序列就行了。p.s.这是一道双倍经验题,不过3506那题的题目描述极为险恶……(见oj1552)……附上AC代码:#include #include #include using namespace std;const int N=1e5+10原创 2018-01-11 11:55:26 · 203 阅读 · 0 评论 -
【BZOJ】3196 Tyvj 1730 二逼平衡树 线段树+平衡树
题目传送门这题除了烦一点,其实也没什么大不了的嘛……就是外层一棵区间线段树,内层套上splay,除了第二个操作需要套一个二分,时间复杂度为O(log32n)O(\log_2^3n),其他的操作的时间复杂度都是O(log22n)O(\log_2^2n)。主要是细心吧,耐心一点写都能过的吧。p.s.话说内存不够导致TLE什么的好鬼啊……还是ZZK大佬最强了,一眼就看出了问题。附上AC代码:#includ原创 2018-01-03 20:44:18 · 327 阅读 · 0 评论 -
【BZOJ】1251 序列终结者 Splay
题目传送门这题其实就是一道Splay的区间修改模板题,太棒啦,又水了一篇blog!其实Splay的区间加上一个值用的就是线段树的延迟标记的思想,实现就和下放区间反转的标记一样。区间求最大值也是类似的。于是这题就是练一下码力的水题。附上AC代码:#include <cstdio>#include <cctype>#include <algorithm>using namespace std;co原创 2017-12-12 19:28:29 · 209 阅读 · 0 评论 -
【洛谷】1533 可怜的狗狗 平衡树
题目传送门这题嘛,一拿到手,我第一反应是线段树套平衡树……然后就被ZH大佬D了:“这题不是排个序加平衡树就好了吗?”QAQ,大佬就是大佬,一针见血的解决了题目。然后JYZ来问:“这一定是一道很难的题目吧?”“不会啊,一道傻逼模板题罢了。”ZH大佬淡淡的说。(JYZ大佬只是在装弱罢了,他太强了,不过一个大佬%比他弱的人是要降RP的)这题的题目中明确指出:每个区间不互相包含。原创 2017-07-12 10:51:51 · 317 阅读 · 0 评论 -
【BZOJ】Tyvj 1729 文艺平衡树 Splay
题目传送门好题目,这题让我们彻底明白了splay和别的平衡树的区别所在——splay可以支持区间操作!这题就是一个区间翻转的裸题,我们可以每次把l-1旋转到根,把r+1旋转到根节点的右儿子,不难发现,我们要翻转的区间就是根的右儿子的左子树。然后我们引入和线段树类似的lazy_tag,记录当前子树是否需要翻转。(因为一个区间连续翻转两次显然和不需要翻转是一样的)每次查询节点位置和输出原创 2017-09-25 21:26:23 · 230 阅读 · 0 评论 -
【HDU】3487 Play with Chain Splay
题目传送门这题和“文艺平衡树”那题其实是差不多的,就是在那题的基础上加上了一个区间转移罢了。(姑且把那个“CUT”操作叫成区间转移吧)这题的区间转移和上一题的区间翻转有点类似,依然是把l-1转到根,把r+1转到根的右儿子,取当前根的右儿子的左子树。然后我们可以把给出的c旋转到根,把c+1旋转到根的右儿子,显然现在根的右儿子的左子树为空,我们直接把上面取下来的那个子树放在那个空位置上就行原创 2017-09-25 21:35:07 · 343 阅读 · 0 评论 -
【洛谷】2464 [SDOI2008]郁闷的小J 平衡树
题目传送门这题的思路好诡异啊……最近在看有关平衡树的一些东西,看到书上的课后习题有这题。看到这题我就傻了——这TMD怎么用平衡树做?题解给出的思路是对每本书的编号离散化后建立平衡树森林,权值为这本书所在的位置。对于每个修改就把这本书从原来的平衡树中删掉,然后插入新的平衡树中。询问非常的简单,差分一下就行了。(话说这题如果用分块做感觉要好想多了……)附上AC代码:原创 2017-09-23 09:40:16 · 404 阅读 · 0 评论 -
【BZOJ】1503 [NOI2004]郁闷的出纳员 平衡树
题目传送门被一道水题卡了一天……我真的好菜啊……对于这题的‘A’和‘S’操作,我们没必要每次修改整个平衡树内的权值,而是转化成用一个变量t来表示当前所有员工的工资变动大小。与之相对应的,插入操作就改成插入一个权值为k+t的人。删除也非常简单,直接在整个平衡树中求k的后继,然后把k的后继旋转到根,显然当前根的左子树直接被舍弃。询问就普普通通的搞一下就行了。p.s.这题的细节较原创 2017-09-22 20:42:35 · 197 阅读 · 0 评论 -
【BZOJ】3224 Tyvj 1728 普通平衡树 平衡树模板
好吧,我承认,我患有帕金森:手贱啊,打错一个字符,把if (t[k].w打成了if (t[k].w>x),结果只得了20分。(泪流满面,55555……)这道题考察的是平衡树的模板,只有一些平衡树的基本操作,相信只要对平衡树有一些了解的同学就能把这题A掉。做这道题,权当是复习一下平衡树的模板,为接下来的平衡树的学习和刷题打下基础。今天我主要讲的是Treap。Treap,顾名思义,就是tr原创 2017-02-18 21:46:37 · 1848 阅读 · 3 评论