左偏树
y_immortal
蒟蒻蒟蒻
展开
-
洛谷3261 [JLOI2015]城池攻占 (可并堆+左偏树)
一道yy好题。 qwq首先根据题意,不难发现,我们要对于每个点维护一个小根堆,然后每次对于每一个点来说,如果当前的堆顶的骑士的攻击力小于城池的生命值,那就弹出栈。 但是对于修改操作,我们应该怎么做呢? 其实可以直接像线段树那样,类似打标记的方式去做,但是记得要多pushdownpushdownpushdown几次来避免一些玄学错误。 nline void pushdown(int x) { ...原创 2019-01-23 20:07:56 · 212 阅读 · 0 评论 -
洛谷3377 左偏树(可并堆)学习笔记
qwq左偏树真是个神奇的东西 我还是wei的啊 首先可并堆,顾名思义,就是支持合并的堆。这里我们用左偏树来实现这个过程。 我们定义dis[i[dis[i[dis[i[表示iii这个节点最近的一个叶子距离这个点的长度是多少。 那么左偏树满足一个节点的左儿子的disdisdis大于等于右儿子。 除此之外,左偏树还具有一些别的性质 1.具有堆的性质 2.当前节点的距离等于右儿子的距离+1。(因为左偏树,...原创 2019-01-21 21:40:26 · 176 阅读 · 0 评论 -
洛谷2713 罗马游戏(可并堆,左偏树)
模板题 没什么好说的。 // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<queue> #include<cmath&g原创 2019-01-21 21:42:45 · 189 阅读 · 0 评论 -
洛谷1552 [APIO2012]派遣 (可并堆+左偏树)
果然我已经是啥题都不会的人了 qwq 首先,题面描述的有点花里胡哨 首先,对于原题的上下级关系构成了一棵树,那么实际上,我们对于一个节点,就是求他的子树内部,最大化忍者的数目满足总薪水小于等于给定值。 qwqqqqq那么应该怎么做呢。 我们可以对于每个节点,维护一个按照薪水排序的大根堆,然后同时维护堆里面的元素的个数以及和,如果当前的和超过了限制,那么优先弹出总薪水比较大的,因为只有数目才会影响最...原创 2019-01-23 16:14:21 · 147 阅读 · 0 评论