贪心
克莉丝汀娜
此时一名自称平民的玩家路过
展开
-
Codeforces 527D - Clique Problem
题目大意:给一些点坐标x[i],每个点都有一个权值w[i],求最大的子集大小,该集合中任意两点x[i]、x[j]满足|xi - xj| ≥ wi + wj。观察式子|xi - xj| ≥ wi + wj,其表示两点距离不小于两点权重之和。可以将点x[i],视为两点x[i]-w[i]、x[i]+w[i]间的一条线段,则此时只要表示x[i]、x[j]的线段不重叠,则不等式成立。通过画图理解原创 2015-03-19 09:42:54 · 1111 阅读 · 0 评论 -
hdu 5303 Delicious Apples (DP+枚举)
题目大意:一个圈,上面有苹果树,每棵苹果树上面有若干苹果。给出圈的总长,以及每个苹果树的位置和上面的苹果数量,现在有一个最多可以装K个苹果的篮子,从位置0开始出发采摘苹果,问最少需要走多少距离,可以把所有苹果都运回起点0。分析:1、如果不是一个圈,而是一条线段,那么直接DP就好了。2、将圈平分为左右两部分,如果在左边或者右边能够装满k个,按原路返回显然是最优的。3、若在某一原创 2015-07-24 22:28:27 · 603 阅读 · 0 评论 -
hdu 5360 Hiking (优先队列+贪心)
题目大意:邀请n个人去徒步旅行。第i个人会接受邀请,当且仅当当前已经邀请的人数num满足:l[i]分析:当两个人的l[i]相同时,优先邀请r[i]小的,显然这样的方案是最优的。于是,可以先将所有人按照l[i]递增排一下序,l[i]相同的,r[i]小的放前面。然后顺序考虑每一个人,若l[i]小于等于当前已经邀请的人数(左端满足要求),则将此人放入队列中。队列中的元原创 2015-08-11 11:36:16 · 381 阅读 · 0 评论 -
Om Nom and Dark Park
传送门题目大意:一颗深度为n+1的满二叉树,根结点编号为1。现在要增加一些边的边权,使根结点到每个叶子节点所经过的边权之和相等。求增加的最小值。分析:对于一个节点到两个子节点,若两边边权不相等,则需要增加较少的一边的边权,使其相等。从而可以自下而上,依次求出两个子节点到根节点边权的差值,累加即可。每次求出差值后,还应当将较大的边权累加到其父节点到其祖父结点的边权上,保证一致性。#i原创 2015-04-05 21:27:19 · 695 阅读 · 0 评论 -
hdu 1055 color on a tree
题意:给一棵树染色。对于一个节点,只有当父亲节点被染色后才能给它染色。给一个节点染色需要1s,花费为染色结束的时刻乘以该节点权值。初始时刻为0求最小花费。思路:贪心+并查集有关证明及结论:http://blog.csdn.net/a601025382s/article/details/38780507#includeusing namespace std;typ原创 2015-04-23 17:52:24 · 414 阅读 · 0 评论 -
ACdream 1412 Numbers
题目大意:给出n和k,求不超过n的能够整除k的字典序最小的数。0要使字典序最小,则必然要使1和0尽量多的放在高位上。可以这样来构造:ans依次取1、10、100、1000、……若取到某一个刚好能够整除k,则此时ans就是结果。否则,构造出离当前ans最近的数。取ans%k,ans-ans%k+k即为距离ans最近的刚好能够整除k的数,其字典序最小。注意循环的时候,计数变量加原创 2015-04-18 09:11:08 · 358 阅读 · 0 评论 -
codeforces 3B (贪心)
两种船,大小分别为1、2。现有一辆容量为v的卡车,给出n艘船类型,以及相应的价值,求最大装载价值以及所选的船只编号。 贪心策略:将大小为1、2的船分开来,按照价值从大到小排序。然后按价值由大到小,先装入大小为2的船直到装不下,再装大小为1的船。记录下此时大小为1、2的船个数n1,n2,以及总价值。然后把已装入的价值最小的大小为2的船拿出,换成两艘大小为1的价值高的船,看价值是否增加,若增加原创 2015-03-30 22:25:57 · 766 阅读 · 0 评论 -
509B、C(贪心)
B题: n堆石子,每堆有a[i]个石子,现用至多k种颜色将其染色,染色规则如下:任意两堆中颜色为c的石子个数相差不超过1思路:用尽可能少的颜色染色。如何保证最少?首先将石子数量最少的那一堆全染色1,其他堆与其相同数量+1的石子也染成1,再看石子数量第二少的,依次下去。 #includeusing namespace std;struct P{ int colo原创 2015-03-26 09:48:32 · 382 阅读 · 0 评论 -
508B、C、E(贪心)
B、给一个奇数,要通过交换任意两个数,将它变成可得到的最大的偶数。奇数变偶数,显然只要把个位与其他位上任意一个偶数交换即可,要保证最大,则判断个位数是否大于当前位的偶数,若大于则交换即可,若个位数比其他各个位上的偶数都要小,则将它与最低位的偶数交换,这样可以保证最大。#includeusing namespace std; char n[100005];int main()原创 2015-03-26 09:43:29 · 456 阅读 · 0 评论 -
18D (贪心)
题:http://codeforces.com/problemset/problem/18/D对于每个顾客,若之前存在其要求的x,将其记录下来。然后将记录下来的x进行排序,取最大的,因为2^x>2^(x-1)+2^(x-2)+…… import java.math.*;import java.util.*;public class Main { static clas原创 2015-03-26 10:14:56 · 345 阅读 · 0 评论 -
518E (贪心)
给一个拥有n个元素、可能含“?”的序列,通过构造使得所有数的绝对值之和最小,同时使得序列的连续的k项之和是严格递增的。题目传送门要满足连续K项和递增,即a[1]+a[2]+……+a[k]只需:a[1] a[2] …… 一开始想到的是枚举起点从1到n-k+1,终点到n。统计出现?的次数,每当出现一个非?的数时,求出之原创 2015-03-26 10:07:49 · 414 阅读 · 0 评论