堆
MintGreenTZ
这个作者很懒,什么都没留下…
展开
-
Bzoj1572 [Usaco2009 Open]工作安排Job
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=1572 反过来做,每个任务都有一个开始时间,到了开始时间就压进堆里,每秒弹出一个价值最高的。var d,v,heap:array[0..100050] of longint; n,i,time,cnt,p:longint; ans:int64; procedure swap(va原创 2016-10-27 20:15:58 · 537 阅读 · 0 评论 -
Bzoj 3523 [Poi2014]Bricks
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=3523 很显然的贪心,每次找不和前面元素重复的最多的,尾部颜色在数量相同时优先级更高。WA了好多发因为姿势丑,如果堆顶元素和前面元素一样只要先把堆顶拿出来就好了。。type rec=record c,cnt:longint; end; const MA原创 2016-11-10 20:16:53 · 556 阅读 · 0 评论 -
bzoj 2151 种树
原题网址:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 最容易想到的是O(n^2) dp。 这里有个优雅处理,就是当选一棵树时,删掉旁边两棵树,把旁边两棵树美观度之和减去当前树的美观度替换当前树的美观度(即a[i]:=a[left[i]]+a[right[i]]-a[i]),这样下次如果取了这棵树就代表取旁边两棵树而不取中间原创 2016-08-14 14:44:47 · 359 阅读 · 0 评论 -
Codeforces Round #390 (Div. 2) D. Fedor and coupons
原题网址:http://codeforces.com/contest/754/problem/D 大意是n个区间选k个,使得所有区间交集最大。 显然区间交的开始点肯定为一个左端点,按照左端点排序,维护两个堆,堆里记区间右端点,一开始先塞到大根堆里,若小根堆不满k个,就把大根堆里的压到小根堆里去。当小根堆满k个就可以统计答案。途中注意删除过期的点。换元素换位置写错了,还有标号标错了,比赛时WA原创 2017-01-07 14:43:47 · 326 阅读 · 0 评论