可并堆模板??又敲了一次,一遍过,很好。 1 #include<string.h> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<math.h> 5 //#include<assert.h> 6 #include<algorithm> 7 / ...
分类:
其他好文 时间:
2018-01-11 11:29:52
阅读次数:
150
n<=1e6个数,把他们修改成递增序列需把每个数增加或减少的总量最小是多少? 方法一:可以证明最后修改的每个数一定是原序列中的数!于是$n^2$DP(逃) 方法二:把$A_i$改成$A_i-i$,变论文题:论文 大概证明是这样的:考虑合并两个区间的答案,假如一个区间答案是{u,u,u,……,u},另 ...
分类:
其他好文 时间:
2018-01-11 11:26:39
阅读次数:
144
#include #include #include //#include #include //#include using namespace std; int n,m; #define maxn 200011 int root[maxn]; bool die[maxn]; int find(i... ...
分类:
其他好文 时间:
2018-01-10 20:22:51
阅读次数:
135
https://www.luogu.org/problemnew/show/3377 主要是删除堆顶元素后并查集关系的维护: 第一种方式(代码): 原来的堆顶是x,删除x后,合并x的左右子树l、r,新的堆顶为y 则令x的祖先指向y 堆顶的直接子节点在并查集中的祖先指向堆顶 这样在寻找l、r的祖先时, ...
分类:
其他好文 时间:
2017-12-29 18:58:55
阅读次数:
116
洛谷 P3377 【模板】左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的 ...
分类:
其他好文 时间:
2017-12-22 15:56:01
阅读次数:
104
【题目】D. Roads in Yusland 【题意】给定n个点的树,m条严格从下往上的路径,每条路径代价ci,求最少代价使得路径覆盖所有边。n,m<=3*10^5,ci<=10^9。 【算法】树形DP+线段树||可并堆 【题解】 ...
分类:
其他好文 时间:
2017-12-22 12:29:33
阅读次数:
97
P3377 【模板】左偏树(可并堆) P3377 【模板】左偏树(可并堆) P3377 【模板】左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y ...
分类:
其他好文 时间:
2017-12-17 14:14:19
阅读次数:
232
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2809 题意概括 n个点组成一棵树,每个点都有一个领导力和费用,可以让一个点当领导,然后在这个点的子树中选择一些费用之和不超过m的点,得到领导的领导力乘选择的点的个数(领导可不被选择)的利润。求利润最 ...
题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数。接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作) 操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除, ...
分类:
其他好文 时间:
2017-12-10 11:22:54
阅读次数:
135
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 我们考虑以每一个节点作为管理者所得的最优答案,一定是优先选择所要薪水少的忍者。那么首先整棵子树的忍者都选上,如果总和大于$M$,那么就不断删除薪水最大的那一个忍者。 然后考虑从下至上合 ...