堆
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 2006: [NOI2010]超级钢琴 可持久化线段树+优先队列
题意小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。 这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个超级和弦所包含的音原创 2017-04-10 15:16:10 · 413 阅读 · 0 评论 -
UOJ #455.【UER #8】雪灾与外卖 堆模拟费用流
题意有n个人和m家商店,每个人都要买一道菜。第i个人的坐标是a[i],第j家商店的坐标是y[i],有c[i]道菜且每道菜价格为w[i],每个人还要花费其到商店距离的路费,问最小花费。n,m≤105,a[i],y[i],c[i],w[i]≤109n,m\le10^5,a[i],y[i],c[i],w[i]\le10^9n,m≤105,a[i],y[i],c[i],w[i]≤109分析显然可以...原创 2019-02-07 15:45:39 · 424 阅读 · 3 评论 -
LibreOJ #2306.「NOI2017」蔬菜 贪心+堆+并查集
题意好长懒得写。分析先考虑如果只有一组询问的话要怎么做。 不难想到我们可以反过来贪心,这样删物品就变成了加物品,只要用一个堆来维护下就好了。 现在有多组询问的话,先找到最大的询问mx,然后做一次贪心得到第mx天的答案。 因为若某件物品在第t天一定能买,则其在第t天之前也一定能买。那么如果我们知道第t天的答案,可以通过把第t天的物品贪心地填进前t-1天来得到第t-1天的答案。 那...原创 2018-06-20 09:58:49 · 457 阅读 · 1 评论 -
Codeforces 983D Arkady and Rectangles 扫描线+线段树套堆
题意一开始二维坐标每个点的颜色都是0。现在会按顺序加入n个矩形,第i个矩形的颜色是i,每次会把原来位置上的矩形覆盖掉。问最后平面上有多少种不同的颜色。 n≤100000n≤100000n\le100000分析考虑用线段树来维护扫描线。 每次加入线段后把标记永久化,线段树每个节点用一个带删除的堆维护这个节点的每个标记,然后维护mxmxmx表示在这个节点表示的线段里面,编号最大的没...原创 2018-05-24 20:06:40 · 278 阅读 · 0 评论 -
bzoj 3242: [Noi2013]快餐店 树形dp+堆
题意给出一棵环套树,求树上任意一个点(可以在边上),使得所有点到该点的最短路的最大值最小。 n≤105n≤105n\le10^5分析如果这是一棵树的话,答案显然就是树的直径/2。 现在变成了环套树,考虑最优点,那么一定存在两个点使得他们到最优点的距离相等且都是最远的。 分两种情况讨论,一种是这三个点所在的链不经过环,这样的情况可以通过dp求出。 另一种是这三个点所在的链的一...原创 2018-04-23 07:28:38 · 279 阅读 · 0 评论 -
LibreOJ #2509.「HNOI2018」排列 贪心+堆
题意 n<=500000分析不难分析到其实就是有一棵树,然后每次要选一个节点。在选某个节点时必须先选其父节点,第i个选的节点的系数为i,问最大的权值和。 先这么想,对于一个最权值小的节点,当我们选了其父亲后,必然会马上选它。那么我们就可以把它和它父亲并在一起。 那合并后的新权值是什么呢?设w表示其权值和,s表示其元素个数,那么新权值就是w/s。 为什么可以这么定权值呢...原创 2018-04-16 20:35:58 · 504 阅读 · 0 评论 -
bzoj 5102: [POI2018]Prawnicy 贪心+堆
题意定义一个区间(l,r)的长度为r-l,空区间的长度为0。 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大。 n<=1000000分析为什么同为一个log的算法跑出来的差别就这么大呢? 看完题就想到了一个线段树做法,打完后发现被卡常了,然后就果断改成了堆。 具体来讲就是枚举左端点,那么最优的右端点显然是把所有左端点不大于该点的区间加入,然后取第k大的...原创 2018-04-15 17:25:40 · 399 阅读 · 0 评论 -
bzoj 3784: 树上的路径 点分治+RMQ+堆
题意给定一个N个结点的树,结点用正整数1..N编号。每条边有一个正整数权值。用d(a,b)表示从结点a到结点b路边上经过边的权值。其中要求a < b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值。 N<=50000,M<=Min(300000,n*(n-1) /2 )分析这题有一种做法是先二分答案点分治,求出距离值的下界后再点分治一次把全部距离值找到。...原创 2018-03-02 07:33:43 · 378 阅读 · 0 评论 -
AtCoder Regular Contest 080 E - Young Maids 贪心+堆+RMQ
题意给出一个排列,要求按如下方式构造一个新排列,使得新排列的字典序尽量小。 每次可以在原排列中选择两个相邻的数,将这两个数在原排列中删掉并按照原来的相对顺序放在新排列的最前面。 n<=200000分析由于要字典序最小,我们可以倒着贪心。 首先找到下标奇偶性不同且字典序最小的两个数(a[x],a[y]),那么a[x]和a[y]就会作为新排列的开头,然后将序列拆分成三个区间...原创 2018-02-18 14:45:14 · 234 阅读 · 0 评论 -
bzoj 3131: [Sdoi2013]淘金 数位dp+堆
题意小Z在玩一个叫做《淘金者》的游戏。游戏的世界是一个二维坐标。X轴、Y轴坐标范围均为1..N。初始的时候,所有的整数坐标点上均有一块金子,共N*N块。 一阵风吹过,金子的位置发生了一些变化。细心的小Z发现,初始在(i,j)坐标处的金子会变到(f(i),f(j))坐标处。其中f(x)表示x各位数字的乘积,例如f(99)=81,f(12)=2,f(10)=0。如果金子变化后的坐标不在1..N的范围内原创 2017-12-12 21:43:55 · 326 阅读 · 0 评论 -
bzoj 5088: HDU 6000 Wash 堆+贪心
题意你现在要洗L件衣服。你有n台洗衣机和m台烘干机。由于你的机器非常的小,因此你每次只能洗涤(烘干)一件衣服。第i台洗衣机洗一件衣服需要wi分钟,第i台烘干机烘干一件衣服需要di分钟。请问把所有衣服洗干净并烘干,最少需要多少时间?假设衣服在机器间转移不需要时间,并且洗完的衣服可以过一会再烘干。 L<=10^6,N<=10^5,M<=10^5分析我的想法是,对于洗衣机,肯定是每次找结束时间最靠前的那原创 2017-12-03 10:48:53 · 557 阅读 · 0 评论 -
LibreOJ #504. 「LibreOJ β Round」ZQC 的手办 线段树+堆
题意给出一个序列,要求资瓷两个操作: 1 l r k表示把[l,r]中小于k的数都改成k 2 l r k x表示从小到大输出[l,r]中小于k的x个数,若数量不足则输出-1 n,q<=500000分析比赛的时候想到了分块做法,也就是对每块维护一个有序的数组,然后修改的话整块打标记,多出来的O(nlogn)暴力修改。查询的话把每块最小的那个和多出来的都扔进堆里面,然后每次找到堆顶再把其对应块中该原创 2017-06-17 09:23:54 · 925 阅读 · 0 评论 -
bzoj 3689: 异或之 字典树+堆
题意给定n个非负整数A[1], A[2], ……, A[n]。对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这样共有n*(n-1)/2个新的数。求这些数(不包含A[i])中前k小的数。 2 <= n <= 100000; 1 <= k <= min{250000, n*(n-1)/2};0 <= A[i] < 2^31分析先对所有数建一棵字典树,原创 2017-06-15 20:58:52 · 648 阅读 · 0 评论 -
bzoj 1029: [JSOI2007]建筑抢修 贪心+堆
题意小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。如果某个建原创 2017-04-21 19:36:22 · 785 阅读 · 0 评论 -
bzoj 1095: [ZJOI2007]Hide 捉迷藏 动态树分治+堆
题意有一棵树,每个节点上有一盏灯,一开始全是关的。要求资瓷两个操作 C x表示将x的灯的状态改变 G表示查询最远的两个关着的灯泡的距离。 n<=100000,m<=200000分析传说中的动态树分治啊~~我们先按照树分治的顺序建一棵新的树,也就是每个节点的父亲为他的上一个分治中心。 显然这棵树的深度不会超过logn。 然后我们在这棵树上每个节点维护两个堆: b:表示该节点的子树到达其父亲原创 2017-04-20 16:37:18 · 485 阅读 · 0 评论 -
bzoj 4010: [HNOI2015]菜肴制作 拓扑排序+堆
题意知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号为1。由于菜肴之间口味搭配的问题, 某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如“i 号菜肴‘必须’ 先于 j 号菜肴制作”的限制,我们将这样的限制简写为< i,j>。现在,酒店希望能求 出一个最优原创 2017-04-18 21:46:17 · 666 阅读 · 0 评论 -
bzoj 4586: [Usaco2016 Open]Landscaping 堆
题意农夫约翰正在建造一个美丽的花园,在这个过程中需要移动大量的泥土。花园由N个花圃(1≤N≤100,000)组成, 第i个花圃最开始有Ai个泥土。 农夫约翰想要重新整理花园,使每个花圃最后有Bi个泥土。Ai和Bi都是0…10范围 内的整数。为了整理花园,Farmer John有几个选择:他可以购买一个单位的泥土,并将它放在他选择的花圃中, 用X单位的钱。 他可以从他选择的花圃上清除一块泥土,并原创 2017-04-04 21:46:20 · 1053 阅读 · 0 评论 -
【LibreOJ #6254. 最优卡组】【堆】
题意有nnn个卡包,第iii个卡包里有cic_ici张卡,每张卡有一个能力值。现在从每个卡包里面选一张卡,定义一种方案的价值为选的卡的能力值之和,求价值前kkk大的方案。n,k,∑ci≤300000n,k,\sum c_i\le300000n,k,∑ci≤300000分析很自然的想法是用一个堆来维护所有状态的价值,从价值最大的状态开始,每次往后拓展一些状态,关键在于如何设置状态。先把...原创 2019-08-07 07:32:29 · 343 阅读 · 2 评论