贪心专题
夕林山寸
这个作者很懒,什么都没留下…
展开
-
CF1428 E. Carrots for Rabbits 贪心+优先队列
n个数切成k份,求切出数的平方和的最小值. 有个比较显然的结论: 对于一个数x,把它分成y份,求平方和sm,使得sm最小的分法一定是均分。 而把一个数分成y份,平方和与分成y-1份的平方和减量设为Cy,分成z份,平方和与分成z-1份的平方和减量设为Cz。显然有:if(y<z)则Cy>Cz。 这里说明了我们可以贪心的分萝卜,当前最优一定是全局最优,因为后面的分块一定不优于当前分块sm的减量。 于是便有了贪心: 刚开始n个数,还需要分出k-n块。 我们把每个数存到优先队列里,.原创 2020-11-06 10:24:17 · 330 阅读 · 0 评论 -
AtCoder Beginner Contest 167 F:Bracket Sequencing 贪心分析
首先我们知道,判一个字符串是否合法,肯定是判任意前缀 ( 的个数一定大于等于 ) 的个数 而多个字符串考虑什么样的字符串放在最左边比较好。 对于一个字符串对拼接有影响的括号一定是自己内部匹配后剩的括号,比如 )(()( 内部匹配一对,剩2个左括号,一个右括号。 显然字符串内部括号匹配完后,剩的都是“(”,且剩的左括号的最多,这样的字符串放在最左边。比如()()(( 剩2个左括号 同理,最右边一定是,剩的右括号最多的字符串。 依照最左最右,我们往中间放。 首先左括号剩的多的肯定尽量放左边,右...原创 2020-05-11 17:37:13 · 510 阅读 · 0 评论 -
POJ3614 贪心
按mi从大到小排序,优先选大的防晒霜一定是最优的。 假设第k个牛,有x,y。2种防晒霜可以选择。SPFx<SPFy。后面牛只能是x,y都可以,或选x,不选y,或都不选。 不可能出现选y不选x。 因为后面的牛mi至少不大于当前牛的mi。又由于每头牛和防晒霜的贡献最多1. 所以选最大的能选的防晒霜准没错。 #include<cstdio> #include<al...原创 2019-09-24 19:14:03 · 112 阅读 · 0 评论 -
POJ3190 贪心
多组输入 吃草时间不能相交 按开始吃草时间从小到大排序 遍历牛, 每次看已有栅栏中,是否能放进去这头牛,不能就新建,能得话随便放一个。。注意这里是随便。。 因为我们按开始吃草时间排序。下一头开始吃草时间肯定晚于当前,所以当前栅栏中早于开始吃草时间的那部分就没有用了。 所以我们只要选一个放进去,就一定是最优的。 #include<cstdio> #include&l...原创 2019-09-24 20:16:53 · 120 阅读 · 0 评论 -
POJ1328
直接放监控 然后看监控掌控的建筑物不太好做。 我们可以把问题转化——每个建筑物被监控需要监控在x轴的范围。 这样问题变为了。有n个区间,至少需要多少点,使得每个区间都至少一个点。 贪心的想 肯定让每个点作用最大,即:每个点尽量放在相交最多的区间。 还是不太好处理。 我们按照区间左端点排序。 从左往右遍历。 我们把点尽量往右放。 遍历后面的区间时,判断这个点是否在区间左端点左边,如...原创 2019-09-24 20:49:01 · 166 阅读 · 0 评论 -
ACwing114. 国王游戏
贪心。 直接想很难。 我们可以假设序列已经最优。 即-->交换任意相邻两项,都不会使结果变优。(类似冒泡,等价交换任意两项) 交换相邻两个大臣,对其他大臣得到的金币没有没有影响。 只看这两个大臣得到的金币。 列个公式算一算就行了。 发现必须满足ai*bi<a(i+1)*b(i+1)才能使结果最优。 注意加上大数 #include<bits/stdc++.h&g...原创 2019-09-25 10:36:17 · 191 阅读 · 0 评论