可并堆,就是可以合并的堆 注意并查集不能路径压缩,不然删除根节点时会出错 cpp include include include include include include using namespace std; const int MAXN = 105005; int init() { in ...
分类:
其他好文 时间:
2018-04-27 21:08:14
阅读次数:
147
参考:https://blog.csdn.net/wxh010910/article/details/55806735 一下课件,可并堆部分写的左偏树 cpp include include using namespace std; const int N=600005; int n,m,tot,f ...
罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m \le 10^5$。 想法:又是GXZlegend讲课,可并堆中的左偏树。了解一下: 一个具有堆性质 ...
分类:
其他好文 时间:
2018-04-16 21:09:41
阅读次数:
123
https://www.lydsy.com/JudgeOnline/problem.php?id=2809 板子题wa了一下因为输出ans没有lld 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cs ...
https://www.lydsy.com/JudgeOnline/problem.php?id=4003 感觉就是……普通的堆啊(暴论),因为这个堆是通过递归往右堆里加一个新堆或者新节点的,所以要始终保持右边的堆比左边的堆小一些以保证复杂度,大概因为这个所以也叫左偏树吧。 这个题我最开始看错题目了 ...
分类:
其他好文 时间:
2018-03-28 16:54:40
阅读次数:
155
不得不说,这道题目是真的难,真不愧它的“省选/NOI-”的紫色大火题!!! 花了我晚自习前半节课看题解,写代码,又花了我半节晚自习调代码,真的心态爆炸。基本上改得和题解完全一样了我才过了这道题!真的烦。没事,那接下来我来完全把这道题搞透。 Part 1 理解题目 Part 2 解题思想 part 3 ...
分类:
其他好文 时间:
2018-03-24 20:39:50
阅读次数:
172
既然新学了左偏树,那我就来写一些学了左偏树之后的总结吧。 Part 1 左偏树是干嘛的 首先,它支持的是两个堆的合并过程。那么最容易想到的是把一个堆的元素全部弹出,一个一个加入另一个堆中,就合并了。显然这样合并的复杂度是O(n)的,再加上程序的其他部分,很慢。我们就考虑让复杂度减小到O(logn), ...
分类:
其他好文 时间:
2018-03-24 20:36:37
阅读次数:
173
Part 1 理解题目 很显然,通过管理关系的不断连边,最后连出来的肯定是一棵树,那么不难得出,当一个忍者作为管理者时,最优解一定是去除掉所有的较大工资的忍者,剩下的忍者符合费用要求时,答案是管理者的管理能力×剩下的忍者数量。并且我们可以推出,当一棵子数中的一棵小子树中去掉了一个忍者,那么那个忍者一 ...
5179: [Jsoi2011]任务调度 Description 一台超级计算机共有N颗CPU。现在这台超级计算机有M个任务要做,但同时还要考虑到不能让CPU过热。所幸的是这 台超级计算机已经将任务安排好了,现在要做的只是请你根据安排好的指令来模拟它的工作过程。一开始,这N颗C PU都没有被分配任何 ...
分类:
Web程序 时间:
2018-03-23 10:26:37
阅读次数:
240
这题老号用左偏树写过。 然后现在用了主席树,感觉理解加深了很多。 首先就是dfs序搞出每个节点管理的区间,然后暴力枚举每一个管理者,然后在区间里找最多能够支付多少人。 值得注意的是当前位置的值应该是排序后的数组的值而非原来当前位置的值,调了一中午。。 主席树: 左偏树: ...