【题目大意】 给出一些数和一些操作。M:合并两个数所在的集合,如果有任意一个数被删除则忽略操作;K:删除某个数所在集合中最小的数。 【思路】 裸裸的,复习^ ^ ...
分类:
其他好文 时间:
2016-09-02 00:34:17
阅读次数:
148
我觉得我要改一下签名了……怎么会有窝这么啰嗦的人呢? 做这题需要先学习左偏树《左偏树的特点及其应用》 然后做一下POJ3666,这题的简单版。 思路: 考虑一下维护中位数的过程原数组为A,找到的不降数列为B当对于A的前n个数已经找好了最优解B[1…n],可知此时A被分成很多块,并被一些大顶堆记录,假 ...
分类:
其他好文 时间:
2016-08-23 13:04:45
阅读次数:
160
左偏树 炒鸡棒的论文《左偏树的特点及其应用》 虽然题目要求比论文多了一个条件,但是……只需要求非递减就可以AC……数据好弱…… 虽然还没想明白为什么,但是应该觉得应该是这样——求非递减用大顶堆,非递增小顶堆…… 这题和bzoj1367题意差不多,但是那题求的是严格递增。(bzoj找不到那道题,可能是 ...
分类:
其他好文 时间:
2016-08-22 00:27:21
阅读次数:
205
bzoj1455罗马游戏 题意: 维护数据结构支持合并和弹出最小值。n≤1000000,m≤100000 题解: 可并堆,注意本题合并时要判断两个节点是否在同一个堆中。本弱写了左偏树和斜堆,发现斜堆比左偏树快,不知道为什么,求神犇解答。 代码: 20160810 ...
分类:
其他好文 时间:
2016-08-14 09:03:26
阅读次数:
143
我们需要枚举根,然后从其子树内选尽量多的点,薪水不超过M,可是暴力复杂度不对。于是考虑自下而上合并树(开始每棵树内只有一个节点,就是自己) 每个树是一个堆,我们维护树的节点个数和薪水总和,合并时,不断弹出堆顶薪水最大的直到薪水总和不超过M,然后用领导力*节点个数更新答案。发现这个模型就是裸的左偏树。 ...
题目链接:点击打开链接
思路:
该题的关键是怎么把两个栈合并, 我们可以使用一种叫左偏树的数据结构, 满足堆的性质和集合的性质,支持在O(logn)的复杂度下进行删除堆顶元素, 插入一个元素,合并两个堆。
细节参见代码:
#include
using namespace std;
typedef pair P;
const int maxn = 152400;
P v[maxn];
in...
分类:
其他好文 时间:
2016-08-10 21:10:37
阅读次数:
147
【题目大意】 有n个城市构成一棵树,除1号城市外每个城市均有防御值h和战斗变化参量a和v。 现在有m个骑士各自来刷副本,每个其实有一个战斗力s和起始位置c。如果一个骑士的战斗力s大于当前城市的防御值h,则可攻破这个城市,并前往它的管辖地(即树上的父亲),同时,战斗力s发生如下变化: ①如被攻占城市a ...
分类:
编程语言 时间:
2016-07-20 13:27:21
阅读次数:
264
【题目大意】 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为 Master。除了 Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发 ...
*摘自交大ACM-ICPC系列丛书和网络 【数据结构】 二叉堆 并查集——初始化O(n),查找均摊O(1),合并均摊O(1) 树状数组——求和、修改O(logn) 左偏树——插入O(logn),求极值O(1),删除O(logn),合并O(logn) Trie——插入、查询O(length) Trea ...
分类:
编程语言 时间:
2016-07-09 14:43:23
阅读次数:
234
【题目大意】 在一个森林里住着N(N<=10000)只猴子。在一开始,他们是互不认识的。但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识(认识具有传递性)的两只猴子之间。争斗时,两只猴子都会请出他认识的猴子里最强壮的一只(有可能是他自己)进行争斗。争斗后,这两只猴子就互相认识。每个猴子有 ...
分类:
其他好文 时间:
2016-07-09 13:31:52
阅读次数:
193