![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
文章平均质量分 54
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ3523: [Poi2014]Bricks
题目大意:给你每种颜色的砖块数量,相同颜色的砖块不能放在一起,两头颜色已经确定,构造一种方案很容易想到是贪心,哪种颜色剩下的多就优先放那种颜色,多个颜色数量相同优先放结尾的那种颜色,实在放不了了就无解#include#include#include#define N 1000010using namespace std;struct ppp{int w,c原创 2016-05-12 14:44:26 · 1085 阅读 · 0 评论 -
BZOJ2088: [Poi2010]Teleportation
题目大意:给一张图,要求你再尽可能的多连边,使得从1到2至少要经过5条边考虑最后建成的图应该是什么样子的,我们可以把n个点划分成6个集合:1所在的集合,A,B,C,D,2所在的集合然后相邻两个集合之间所有点连边,集合内所有点互相连边,其余没有边首先可以证明1所在的集合={1},因为如果你放了其他点进来,他就只能和1还有A连边,不妨把他放到A里,使其还能和B连边同理可证2所在原创 2016-09-21 09:00:14 · 859 阅读 · 0 评论 -
BZOJ1110: [POI2007]砝码Odw
题目大意:给定一些容器和砝码,保证任意两个砝码之间存在正整数倍数关系,求最多能放进去多少砝码首先把所有重量相同的砝码扔到一起,因为都是正整数倍,所以最多有logN种不同的砝码然后考虑放置,首先砝码肯定要从最小的先开始放那么我们考虑放置某一组砝码的时候优先放到哪个盒子里,这个其实可以由后一组砝码来决定,也就时先把当前容器装下后面砝码的残余空间计算出来,然后把砝码优先向这些残余空间原创 2016-08-24 15:19:48 · 615 阅读 · 0 评论 -
BZOJ4391: [Usaco2015 dec]High Card Low Card
题目大意:给定对方的出牌序列以及你的手牌,双方手牌一共是一个1到2n的全排列,一开始是点大胜出,你可以在任意时刻改一次规则变成点小胜出,求最多能赢多少次用贪心的思想,肯定一开始尽量用点大的,改规则之后用点小的,每次用卡的时候都用那个恰好能赢的卡是最优的,如果没有就用最小的,然后枚举一下改规则的时间,这样可以O(N^2)算出答案我们考虑先不枚举改规则的中间点,用F[i]表示前i个回合原创 2016-08-22 11:01:26 · 928 阅读 · 0 评论 -
BZOJ2529: [Poi2011]Sticks
题目大意:给你每根木棍的长度和颜色,求一个能拼成三角形且木棍颜色互不相同的方案枚举长度最大的木棍,另外两个木棍就越长越好,因此只需要不断维护前三长且颜色互不相同的木棍就可以了#include#include#include#include#define N 1000010using namespace std;struct ppp{int c,l;}b[N];bool原创 2016-08-22 16:05:38 · 633 阅读 · 0 评论 -
BZOJ2525: [Poi2011]Dynamite
题目大意:给一棵树,书上有一些关键节点,要求你选m个点,使得关键节点到这些点中距离的最小值的最大值最小,求这个值先二分答案,转成判定性问题考虑我们已经知道覆盖范围了,那么我们就要用最少的点来覆盖整个树这一步用贪心就可以了,从下往上,直到必须放一个点的时候才放为什么是对的呢?我们考虑在一个不是必须放的地方放置了一个点,这样他们对于子树下面的影响是一样的,都是全部能原创 2016-08-31 15:25:31 · 806 阅读 · 0 评论 -
BZOJ3060: [Poi2012]Tour de Byteotia
题目大意:给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上首先我们考虑对于一个不符合题意的图,随便选择上面一个不符合题意的环,这个环上至少要被删掉一条边,这时我们一定是选择带着编号小于等于k的节点的边来删....这样一直做下去,我们会发现,原来大于k和大于k之间的边是不会被删除的,所以我们可以把这些边先加入进来,然后再像kruskal一样尽量多的把剩下的边原创 2016-06-23 15:15:46 · 1221 阅读 · 0 评论 -
BZOJ2802: [Poi2012]Warehouse Store
题目大意:每天会有进货和订单,对于每份订单要么今天满足他要么就再也满足不了了,问最多能满足多少份订单一个贪心最后一天的货肯定只能用于满足最后一天的订单倒数第二天的则有两个选择,为了保证能完成的订单数最多,就在两天之中挑一个快要达成的来满足(相当于在倒数第二天的订单和倒数第一天的订单减去倒数第一天的货之间取个最小值)以此类推...可以看代码#include#include原创 2016-06-22 15:01:47 · 840 阅读 · 0 评论 -
BZOJ2799: [Poi2012]Salaries
题目大意:给一棵树树上有些节点到根的路径上有标号,每个节点的标号必须他父亲节点标号小,问哪些节点标号能确定这题一开始想了半天边DFS边出解的都是错的TAT....首先我们可以从根开始DFS得出每个不确定节点的标号最大是多少然后我们考虑加入一个节点的标号是确定的,当且仅当它的标号最大是i且标号最大为i以下的恰好有i-1个所以排个序直接搞就可以了具体可以看代码#原创 2016-06-17 15:08:19 · 801 阅读 · 0 评论 -
BZOJ2796: [Poi2012]Fibonacci Representation
题目大意:给一个数,问最少可以用几个斐波那契数加加减减凑出来严谨的证明实在不会,只有感性证明想想现在要凑一个数,比它大的数我们可以想象成和他等差的比他小的数然后假如我们不选离他最近的那个数而选择远的,那这种方案一定能用选近的的方案替换,所以每次都要选那个更近的...当时我数组只开了61竟然A了....#include#include#include原创 2016-06-17 08:47:56 · 900 阅读 · 0 评论 -
BZOJ2800: [Poi2012]Leveling Ground
题目大意:给定n个数和a,b每次可以选择一段区间+a,-a,+b或-b,问最少操作几次能把他们都变成0首先应该能想到差分,这样就相当于在n+1个数每次选两个数,一个+a一个-a(或b),最后把他们都变成0首先我们对于每个差分之后的B[i]先用exgcd构造出一组用a,b表示的解,即a*x[i]+b*y[i]=B[i]最后这个点的解一定形如X[i]=x[i]+k*b,Y[i]=y[i]-原创 2016-07-02 09:55:38 · 1179 阅读 · 0 评论 -
BZOJ2632: [neerc2011]Gcd guessing game
题目大意:一个人在1~n中想一个数,每次你可以在1~n中猜一个,猜对了游戏结束,否则他告诉你gcd(x,y),x,y是他想的和你猜的数,问最差情况最少多少次能猜中首先我们想,当你猜了一个数之后他告诉你gcd不为1时,这时数的范围少了至少一半,感性来说这样更便于我们猜...所以所谓的最差情况应该就是你在确定之前一次也猜不对并且他永远告诉你gcd=1这样的话我们可以将n以内的素数挑出来,把原创 2016-06-30 14:26:49 · 1068 阅读 · 2 评论 -
BZOJ2797: [Poi2012]Squarks
题目大意:给n个数的所有和,求这n个数的所有可能方案首先最小的是x1+x2,第二小的是x1+x3,接着O(N)枚举x2+x3,就能算出x1,x2,x3,然后从所有的和中删掉这3个和,剩下的最小的一定是x1+x4,这样就求出了x4,然后再删掉这三个新的和,又能求出x1+x5....以此类推没有spj,但是貌似1A了...#include#include#inc原创 2016-06-24 13:46:58 · 1150 阅读 · 0 评论 -
BZOJ3414: Poi2013 Inspector
题目大意:一天公司有n个员工和m个员工记录,每个员工只会在连续的一段时间内工作。现在给出m条记录分别是谁写的、什么时候写的以及写的时候除了他还有多少人。求最大的k使得前k条记录互不矛盾 挺神的题...首先二分答案转成判定性问题,这样记录就没有先后顺序之分了然后考虑什么情况会出现矛盾:1.记录本身的矛盾:两条记录是同一时刻,但人数不同 判断方法:这个是很显然的原创 2016-05-31 19:52:20 · 1078 阅读 · 0 评论 -
BZOJ3419: Poi2013 Taxis
题目大意:一条线段有三个点,0为当前所在位置,d为车站位置,m为家的位置,人不想走路可以叫车,每辆车有一个路程上限,并且都从车站出发,叫的车行驶之后不必须回到车站,问最少叫几辆车 第一步想到的肯定是贪心,因为人在还没过车站的时候离车站越远越不划算,浪费的路程也就越多,所以要尽量先叫行驶路程远的车但是会有一个问题,比如说这组数据:12 4 52 3 4 5 8如果贪心的话显然原创 2016-05-29 14:22:25 · 892 阅读 · 0 评论 -
BZOJ3829: [Poi2014]FarmCraft
题目大意:给一棵树,走过每条边需要花费一个时间,安装软件又需要花费一个时间,需要遍历整棵树并回到起点,想让所有点中到达时间+安装时间的最大值最小,问这个值是多少显然每条边最多被走两边,否则一定不是最优解这就相当于从一个节点进入他的一个子树之后,一定遍历完了才回来所以我们可以进行贪心对每个节点记录两个值,一个是从这个节点下去遍历所有子节点之后再回来所需要花费的时间,另一个是假设从0时原创 2016-05-12 18:14:18 · 962 阅读 · 0 评论 -
BZOJ1117: [POI2009]救火站Gas
题目大意:给你一棵树,要求你在一些节点建立消防站(一个节点可以建多个),每个消防站可以管理与它距离不超过K的最多S个节点,要求每个节点都至少被一个消防站管理,问最少需要安排几个消防站一看到这种代价都是1的树上管理问题就能想到贪心...也就是说我们能想到一种贪心策略:以1为根建树,从叶子开始,能不放消防站就不放,直到必须放了(有没被覆盖节点与当前节点距离为K)的时候再放消防站这样原创 2017-01-15 14:14:19 · 1084 阅读 · 0 评论