堆
文章平均质量分 52
ZigZagK
一个蒟蒻。
展开
-
【堆+链表】POJ2274[The Race]题解
POJ2274题解。原创 2017-02-12 21:32:49 · 981 阅读 · 4 评论 -
【堆+平衡树】BZOJ1058(ZJOI2007)[报表统计]题解
题目概述维护一个可能为负数的整数数列。在最开始的时候,有一个长度为 nn 的整数序列,并且有以下三种操作:INSERT i kINSERT\ i\ k :在原数列的第 ii 个元素后面添加一个新元素 kk ; 如果原数列的第 ii 个元素已经添加了若干元素,则添加在这些元素的最后。MIN_GAPMIN\_GAP :查询相邻两个元素之间的差值(绝对值)的最小值。MIN_SORT_GAPMIN\_SOR原创 2017-12-03 15:22:23 · 371 阅读 · 0 评论 -
【贪心+堆】AtCoder Grand Contest(018)C[Coins]题解
题目概述有 X+Y+ZX+Y+Z 个人,每个人有 AiA_i 个金币, BiB_i 个银币, CiC_i 个铜币。现在选 XX 个人提供金币, YY 个人提供银币, ZZ 个人提供铜币。求最多提供多少币(金银铜)。解题报告挺好的题目,可以完美地干翻像我这样的蒟蒻。我们先考虑只有金币和银币的最优策略:按照 Bi−AiB_i-A_i 从小到大排序,然后前 XX 个取 AA ,后 YY 个取 BB 。如果原创 2017-10-19 16:43:22 · 409 阅读 · 0 评论 -
【贪心+堆】Codeforces725D[Contest Balloons]题解
题目概述有 nn 个队伍,第 ii 个队伍有 tit_i 个气球,重量为 wiw_i ,其中第 11 个队伍是你所在的队伍。你可以给别的队伍任意数量的气球(不超过你的气球数),如果一个队伍的气球数 >> 重量,这个队伍就会飞起来(滑稽)并失去比赛资格。求你的队伍能达到的最小名次是多少(按气球数排名)。解题报告这是一道挺简单的贪心题。我们肯定要选气球数多于我们的队伍弄飞,且在这些队伍中选需要气球数少的原创 2017-08-10 20:40:53 · 383 阅读 · 0 评论 -
【贪心+堆+链表】51Nod1053[最大M子段和 V2]题解
题目概述在 {An}\{A_n\} 中选至多 mm 个不相交的子段,求子段和的最大值。解题报告初始想法是DP,好像可以优化到 O(n2)O(n^2) ,但是对于 5000050000 的数据范围还是不行。把 00 无视掉,我们就可以把 {An}\{A_n\} 分为一系列正子段和负子段(正负交替),选走所有正段肯定是最优秀的,但是正段个数可能大于 mm ,所以我们要想办法使块数减少(定义 V(i)V(原创 2017-09-02 19:01:05 · 1113 阅读 · 0 评论 -
【贪心+堆+链表】BZOJ1150(CTSC2007)[数据备份Backup]题解
题目概述有 nn 个在一条直线上的办公楼,距原点距离为 s[i]s[i] , 现在要建立 KK 个连接两个办公楼的网络电缆,每个电缆的代价为两个办公楼间的距离。每个办公楼不能被超过一条网络电缆连接,求最小代价。解题报告选相邻两个建肯定是最优秀的,比如:x==x==x==x那么贪心的想法就是用堆取出前 KK 个最短的线段,但是由于端点不能共用,所以每次取出最短的可能不如不取该线段,如:x==x==x=原创 2017-09-06 20:52:33 · 367 阅读 · 0 评论 -
【贪心+堆+树状数组】JXOI2017[加法]题解
题目概述有一个序列 {an}\{a_n\} 和 mm 个线段,你可以选 kk 个线段,每个选择的线段 [l,r][l,r] 可以使 aa 中的 [l,r][l,r] 都加上 AA (给出),找出一个方案使得 aa 中最小值最大。解题报告由于是求最小值的最大值,所以我们想到二分答案 midmid ,这样我们就知道序列中每个数还需要加多少次才能 ≥\ge midmid ,设第 ii 个数的次数为 ti原创 2017-08-14 21:45:49 · 1275 阅读 · 0 评论 -
【贪心+ST算法+堆】BZOJ4458[GTY的OJ]题解
题目概述有 nn 个目录,每个目录有一个父亲目录和靠谱值,一个题目由若干个目录构成,其中任何一个目录都是别的目录的子孙和祖先,一个题目的靠谱值是所有目录靠谱值的和。需要选 kk 个目录数量范围在 [L,R][L,R] 且不相同的题目,使得靠谱值最大。解题报告和BZOJ2006套路是一样的,只不过做到了树上。所以我们使用树上RMQ就行了。示例程序#include<cstdio>#include<cm原创 2017-08-10 09:09:01 · 900 阅读 · 0 评论 -
【贪心+ST算法+堆】BZOJ2006(NOI2010)[超级钢琴]题解
题目概述给出一个序列,选出 kk 个长度在 [L,R][L,R] 的子段(不可选重),求 kk 个子段的和的最大值。解题报告如果我们把所有长度在 [L,R][L,R] 的子段都处理出来并从大到小排序,那么根据贪心,肯定选前 kk 个最优秀。但我们不可能把所有满足要求的子段都处理出来:太多了。需要注意到的是, kk 并不是很大,所以我们要想办法每次都选最大的满足要求的子段, 选 kk 次累加起来就是答原创 2017-08-08 18:32:46 · 1230 阅读 · 3 评论 -
【贪心+堆】BZOJ1029(JSOI2007)[建筑抢修]题解
BZOJ1029题解。原创 2017-06-17 16:32:26 · 974 阅读 · 2 评论 -
【拓扑+堆】BZOJ4010(HNOI2015)[菜肴制作]题解
题目概述给出一张 nn 个点 mm 条边的拓扑图,假设第 ii 个点是第 aia_i 个出队的,求一种合法方案使得 {an}\{a_n\} 的字典序最小。解题报告好妙的题……因为题目里的要求比较难实现,所以我们可以倒着来建反图,那么问题变成了让编号大的点尽量先出队(而不是求字典序最小)。最后倒着输出就行了。示例程序刚开始以为是以前做过的简单题,于是盗了代码……码风奇怪不原创 2017-12-05 20:56:58 · 351 阅读 · 0 评论