
堆
文章平均质量分 57
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
POJ 3481 Double Queue 堆修改标记
Enemy Double Queue!题目大意:维护一种数据结构,支持以下操作:1.插入一个值2.查询最大值并删除3.查询最小值并删除元素的值这数据结构一看就是堆。。。不过堆结构不能同时维护最大值和最小值,于是我们开两个堆,一个大根堆,一个小根堆其中一堆删除时,另一堆也要删除相应元素于是删除的话有两种方法1.映射 1000W开数组映射妥妥MLE 于是我们在两个堆原创 2014-08-29 15:46:03 · 1707 阅读 · 0 评论 -
BZOJ 1528 POI2005 sam-Toy Cars 堆+贪心
题目大意:有n个玩具,都放在架子上,地板上能放k个,要玩p次玩具,如果不在地板上就要去架子上拿,地板满了要放回去,求最少操作次数贪心思想:每次放回玩具时选择下次玩的时间最靠后的玩具放回去可以用堆来模拟这一贪心过程#include #include #include #include #define M 500500using namespace std;typedef pa原创 2014-12-12 12:44:38 · 2072 阅读 · 1 评论 -
BZOJ 3832 Poi2014 Rally 拓扑排序+堆
题目大意:给定一张拓扑图,要求删掉一个点使最长链最小,求删掉的点以及删掉后的最长链这题真是神思路- -首先我们建立源点和汇点 源点连向所有点 所有点连向汇点那么图中最长链就变成了S到T的最长链然后我们拓扑序DP求出S到每个点的最长链f[x]和每个点到T的最长链g[x]我们令一条x->y的边的权值为f[x]+g[y]那么这个图的最长链就转化成了所有边的边权的最大值更进一步原创 2015-03-16 00:02:02 · 2470 阅读 · 1 评论 -
BZOJ 3728 PA2014Final Zarowki 堆+贪心
题目大意:给定n个灯泡和n个房间,每个灯泡有一个功率,每个房间有一个照亮的最小功率,可以换k个灯泡,求照亮所有房间的最小功率将灯泡的功率和房间的最小功率排序,从大到小扫描每个房间对于一个房间,首先将能照亮这个房间的灯泡都加入堆如果堆为空则花掉一次换灯泡的机会换一个功率为这个房间的最小功率的灯泡否则取走功率最小的灯泡照亮这个房间,并将灯泡功率与房间最小功率的差值加入另一个堆结束时原创 2015-03-03 16:58:53 · 1927 阅读 · 0 评论 -
BZOJ 1095 ZJOI2007 Hide 捉迷藏 动态树分治+堆
题目大意:给定一棵树,一开始每个点都是黑点,多次改变某个点的状态或询问距离最远的两个黑点的距离《珍爱生命远离STL可是我还是可耻地用了STL系列》传说中的动态树分治。。。其实并没有那么神嘛= =↑别听这傻瓜瞎说这货被STL卡了一天QAQ我们把分治过程中遍历过的重心都连起来 上一层的重心链接下一层的重心 可以得到一棵新的树下面我们开始讨论这棵新树显然这棵树的高度不会超原创 2015-03-19 17:42:16 · 7371 阅读 · 0 评论 -
Codeforces Round #521 D Shop 堆
题目大意:给定k个数,n个操作,每个操作有三种类型:a[i]=ba[i]+=ba[i]*=b现在你可以进行最多m次操作,每个操作最多进行一次,要求操作结束后乘积最大按使用的顺序输出每个操作的编号乱七八糟地写了一发D……结果最后没调出来QAQ B题ye原创 2015-03-06 15:54:21 · 1412 阅读 · 0 评论 -
BZOJ 4010 HNOI2015 菜肴制作 拓扑排序+堆
题目大意:给定一张无向图,求一个拓扑序,使: 1的位置最靠前 在保证上面的条件下使2的位置最靠前 在保证上面的条件下使3的位置最靠前 …… 注意不是字典序最小!例如样例3建立反图,对反图求字典序最小的拓扑序,然后反向输出即可。 我不知道为什么。真的不知道。 求个解答在线等。#include <cstdio>#include <cstring>#include <iostream>原创 2015-04-22 12:21:28 · 2686 阅读 · 3 评论 -
BZOJ 1150 CTSC2007 数据备份Backup 堆+贪心
题目大意:给定一个长度为n−1n-1的序列,要求选出kk个不相邻的数使得和最小 费用流显然能跑,而且显然过不去- - 考虑用堆模拟费用流 一个错误的贪心是每次取最小,这样显然过不去样例 我们把【每次取最小】改为【每次选择一个区间取反】,用堆来维护这些区间即可 每次取出最小的区间,然后将两边合并 (比如现在堆里有[1,3][4,4][5,5])这三个区间,我取走了[4,4]并计入答案,那么原创 2015-06-23 10:56:57 · 2097 阅读 · 0 评论 -
BZOJ 2118 墨墨的等式 堆优化Dijkstra
题目大意:给定nn个物品,每个物品有一个非负价值,问[L,R][L,R]区间内有多少价值可以被凑出来 好题!!! 如果物品数量可以为负,显然求个gcdgcd就行了 现在物品数量必须非负 任选一个ai>0a_i>0,如果一个价值k∗ai+x(0≤x<ai,k≥0)k*a_i+x(0\leq x<a_i,k\geq0)可以被凑出来,那么显然(k+1)∗ai+x,(k+2)∗ai+x,...(k+原创 2015-06-23 14:40:38 · 4399 阅读 · 0 评论 -
BZOJ 2069 POI2004 ZAW 堆优化Dijkstra
题目大意:给定一张无向图,每条边从两个方向走各有一个权值,求从点1往出走至少一步之后回到点1且不经过一条边多次的最短路 显然我们需要从点1出发走到某个和点1相邻的点上,然后沿最短路走到另一个和点1相邻的点上,然后回到点1 那么我们将与点1相邻的点都设为关键点,然后将点1从图中删除,题目转化成了给定图上的一些关键点求最近点对 枚举每个点显然会T 考虑每次将关键点划分为两个集合A,BA,B,然后原创 2015-06-11 15:19:06 · 2170 阅读 · 0 评论 -
BZOJ 2802 Poi2012 Warehouse Store 堆+贪心
题目大意:有n天,早上进货中午卖,可以选择卖或者不卖,问最多可以卖出多少人首先贪心的思想是如果当前能卖就卖但是这样不一定是最优的比如说我第一天来一个人把所有的库存都买走了 然后后面基本没有补给 后面的人都饿死了因此我们维护一个大根堆来记录我们都卖出了多少份如果有一个人买不到 我们去大根堆里寻找有没有买的比他多的 如果有 把之前的人取消 卖给这个人这样虽然不能增加答案 但是可原创 2014-12-11 20:36:33 · 1317 阅读 · 0 评论 -
BZOJ 2007 NOI2010 海拔 平面图最小割
题目大意:YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域。简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形。从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向道路连接主干道上两个相邻的交叉路口。下图为一张YT市的地图(n = 2),城市被划分为2×2个区域,包括3×3个交叉路口和12条双向道路。 小Z原创 2014-11-19 15:55:34 · 2162 阅读 · 0 评论 -
堆模板
void swap(int &x,int &y){int z=x;x=y;y=z;}struct small_root_heap{ int heap[M],top; void insert(int x){heap[++top]=x;int t=top;while(t>1&&heap[t]>1])swap(heap[t],heap[t>>1]),t>>=1;} void p原创 2014-08-22 18:55:20 · 1406 阅读 · 0 评论 -
POJ 3784 Running Median 对顶堆算法
题意:一组数按顺序加入数组,每奇数次加入的时候就输出中位数(看成中出し的果断自粽)哼哼,如果是求最大最小值,那么我们很容易就会想到利用堆那么这道题很明显也可以用堆的办法解决——锵锵锵锵!原创 2014-08-22 18:50:06 · 3094 阅读 · 0 评论 -
BZOJ 3627 JLOI2014 路径规划 分层图+堆优化SPFA JLOI2014全AC达成!
题目大意:给定一个无向图,每条边有边权,有些点有点权,一些点是加油站,求一条起点到终点的最短路,使经过有点权的点不超过k次,一管油只能走limit的时间,时间到了就只能到加油站花cost的时间加油那个红绿灯的计算公式是 red*red/2/(red+green) 考场上很多人没推出来这个挂掉了 我推出来不会写,写了爆搜,26分限制条件有点多。。。考虑到k首先我们枚举每一个加油站(起始点原创 2014-09-10 08:56:33 · 2079 阅读 · 0 评论 -
BZOJ 2763 JLOI2011 飞行路线 分层图+堆优化SPFA
题目大意:给定一个无向图,求源点到汇点的最短路,其中有k次机会把边权变为0非常水的分层图。。话说所谓分层图其实就是多一维的SPFA。。。还起了这么个高大上的名字这题裸SPFA过不去 要加堆优化 我的堆优化一定是写的有毛病 把heap[top--]=heap[0]改成top--就死活过不去 把魔法森林改一下测试了一下结果居然WA了总之贴代码#include#include#inc原创 2014-09-09 21:04:45 · 1648 阅读 · 0 评论 -
BZOJ 2006 NOI2010 超级钢琴 划分树+堆
题目大意:给定一个序列,找到k个长度在[l,r]之间的序列,使得和最大暴力O(n^2logn),肯定过不去看到这题的第一眼我OTZ了一下午。。。后来研究了很久别人的题解才弄明白怎么回事。。。蒟蒻果然不能理解大神的思路啊0.0首先维护前缀和,那么以第i个元素结尾的和最大的序列自然就是sum[i]-min{sum[j]}(i-r然后我们维护一个大根堆,每取走一个以i为结尾的元素,加入s原创 2014-09-30 13:12:33 · 2234 阅读 · 0 评论 -
BZOJ 3689 异或之 Trie树+堆
题目大意:给定n个数,求这n个数两两异或的值中的前k小首先我们对所有数字建立二进制Trie树,可以利用Trie树上的size域查询出一个数与其它数异或值的第k小然后我们维护一个堆,将所有数与其它异或值的第2小加入堆(第一小是自己异或自己,不在题目要求范围内),当取出一个数异或值的第k小后,将第k+1小加入堆一个异或值会被两个数分别取出一次,所以取出奇数次时输出,取2*k次即可时间复原创 2014-10-11 13:26:17 · 3160 阅读 · 0 评论 -
BZOJ 1029 JSOI2007 建筑抢修 贪心+堆
题目大意:n个建筑需要抢修,第i个建筑需要T1时间抢修,必须在T2时间之前抢修完毕,求最多能抢修多少建筑首先我们对T2排序 然后依次修理 但是这样贪心显然是不正确的 比如说这组数据:510 1010 202 212 212 21贪心只能修理前两个,而实际上最多可以修理4个于是我们考虑修正贪心算法比如说这组数据,当我们枚举到3的时候,虽然已经无法修理更多了原创 2014-10-28 16:39:11 · 3120 阅读 · 0 评论 -
BZOJ 1179 APIO2009 ATM Tarjan+堆优化SPFA
题目大意:给定一个有向图,每个点上有正权,求一条从起点出发到任意终点的路径,要求路上的点权和最大(一个点权只能被加一次)首先Tarjan缩点,易知一个强连通分量内任意一个点权拿到就可以拿到强连通分量内所有的点权然后这个图就没有环了,SPFA跑最长路即可边数500W,所以要加堆优化#include#include#include#include#define M 500500原创 2014-11-02 14:13:19 · 1695 阅读 · 0 评论 -
BZOJ 1293 SCOI2009 生日礼物 堆
题目大意:给定一个数轴上n个点,每个点有一种颜色,一共k种颜色,求一个最短的区间,包含所有k种颜色卡了一段时间0.0 一开始想二分答案啥的 后来发现数据范围太大写不了0.0 后来去找题解才发现尼玛真巧妙维护一个堆 将每种颜色的第一个珠子加入堆 然后不断把最左侧的珠子取出,加入该种颜色的下一个 同时更新ans果然这么大数据范围还是要用堆这种常数小的数据结构啊0.0我手写了堆却开了ST原创 2014-10-21 16:29:26 · 1545 阅读 · 0 评论 -
BZOJ 2725 Violet 6 故乡的梦 堆优化Dijkstra+线段树
题目大意:给定一张带权无向图和起点SS、终点TT,每次询问如果某条边被删掉那么从SS到TT的最短路是多少 数据范围2∗1052*10^5 注意样例错了 第二个输出应该是66不是55首先搞出从SS到TT的任意一条最短路 然后对于一条边(x,y)(x,y),如果不在最短路径上,预处理出SS到xx的最短路以及何时离开选定的最短路径S′S',以及yy到TT的最短路以及何时进入选定的最短路径T′T' 然原创 2015-08-21 21:04:58 · 3477 阅读 · 0 评论