ACM-贪心
Nicetomeetu-
没有
展开
-
ECNU CCCC选拔赛 F Ms. Weasel eats chicken 贪心 + 优先队列
黄⿏狼姐姐将要踏上⼀段旅程。她事先规划好了她的旅⾏线路,因此她知道她将从⼩镇 0 出发,途径⼩镇 1, 2 . . . n − 1,最终到达⼩镇 n。出发时,黄⿏狼姐姐的体⼒值为 S。在从⼩镇 i − 1 前往⼩镇 i 的路途当中,她会消耗体⼒ wi。到达⼩镇 i 后,她可以在这个⼩镇的饭馆吃⼀些鸡来恢复体⼒。由于近⼏年经济不景⽓,外加东⽅神秘⼒量(据说是鸡年)的影响,每个⼩镇都只能供应 1 只鸡原创 2017-03-13 20:23:40 · 338 阅读 · 0 评论 -
(2017多校训练第二场)HDU - 6047 Maximum Sequence 贪心 + 单调队列
比赛的时候是用线段树写的,赛后看了题解发现还有单调队列这种操作。官方题解:想学习单调队列可以看下这篇博客:点击打开链接代码如下:#include using namespace std;typedef long long int LL;const int MAX_N = 250005;const int MOD = 1e9 + 7;struct Node{原创 2017-07-29 21:44:47 · 323 阅读 · 0 评论 -
EOJ1855 Expedition 贪心
贪心策略:要想使加油的次数最少我们肯定想要每一次加油的量尽可能的多,但是如果含油量最多的加油站在最后面,那么我们根本就到不了那个加油站。所以我们还要考虑能不能走到那个加油站。所以现在的贪心策略就变成了,在能到达的范围内,选择一个含油量最多的加油站加油。然后继续走,在能到达的范围内选择含油量最大的加油站加油........不断循环,就得到了答案。在取含油量最多的加油站的时候可以使用优先队列,取到原创 2016-10-18 14:17:49 · 306 阅读 · 0 评论 -
EOJ1488 COIN COLLECTOR 贪心
和舍友打了一个半小时嘴炮,终于搞定了他,很开心。本题思路就是构造一个答案a0,a1,a2...... an是找零的硬币。而需要找零的总钱数就是a0+a1+a2......贪心策略:1.因为题目要求是获得最多的未曾获得的硬币,所以我们最开始的想法是将所有没获得的硬币都放进答案中。但是这样真的对吗?假如输入是1 0, 2 0, 3 0。那么找零为6时,1,2,3不会都用到。因为原创 2016-10-22 01:28:27 · 445 阅读 · 1 评论 -
POJ 1456 贪心
首先按照最晚售出时间对所有商品排序。然后从最晚售出时间最早的开始考虑。如果在之前还有时间段是空着的,那么我们就把这个商品在那个时间段出售。如果之前没有时间空着了,那么我们在前面找一个价格最小的商品,如果当前商品价值大于最小价值,就替换那个最小价值的商品。如果当前商品价值比之前最小价值还要小,就不替换。代码如下:#include #include #include #include原创 2016-11-13 18:41:48 · 305 阅读 · 0 评论 -
codeforces 733C Epidemic in Monstropolis 贪心
题意很简单,很明显看出最后形成的队列,可以把最初的队列划分成一段一段。也就是问题转化成了某一段能不能通过吞吃变成一个。起初总是受到误导,认为一个队列中是同时开始吞吃的。实际上从开始到最后只有一个怪兽在吃。就是最大的那一个。只要一个队列中存在一个最大的,同时他们又不全部相同。那么这个队列就可以最后变成一个怪兽。这道题真的是烦啊,总是写错。看来还是代码基本功不扎实。主要是更新队列中点的下标的时原创 2016-11-27 15:41:15 · 349 阅读 · 0 评论 -
POJ 2376 Cleaning Shifts 区间贪心
很简单的贪心,按照区间的开始位置从小到大,如果开始位置相同,就按照结束位置从小到大排序。然后不断的延伸区间,假如当前区间是[1,5] 接下来我们开始寻找有哪些区间的开始位置小于5呢?结果我们发现有2个区间[2,6],[3,7],然后我们选择结束位置靠后的那个,也就是[3,7],所以现在的区间就被我们延伸成了[1,7]。以此类推,看最后能不能延伸到[1,T]注意三个点1.排序结束后,第一原创 2017-02-19 16:52:49 · 298 阅读 · 0 评论 -
POJ 1328 Radar Installation 区间贪心
对于每座岛屿,求出可能的雷达范围,也就是一个区间。(以岛屿为中心,d为半径画圆,与x轴的左交点就是区间的做断电,右交点就是右端点)对于得到的区间按照x递增,x相同y递增的规则排序。然后从前往后扫描,求出重叠区域,在重叠区域放置雷达。不断循环下去即可。#include #include #include #include #include #include #include原创 2017-02-20 21:02:53 · 362 阅读 · 0 评论 -
POJ 3190 贪心+优先队列
这道题受到了以前做过的一道题目的影响,有n节课,每节课都有一个开始结束时间,求出一天中最多可以上多少节课,使得任意两节课时间不冲突。这道题目是按照结束时间递增的时间排序。刚开始碰到这道题我就有感觉和以前那道题差不多,毕竟对于每一个stall,都是尽量的使得里面的区间最多。所以我就按照结束时间排序了。但是这道题目怎么写呢?按照贪心的思想,我们肯定是想要每一个stall都是尽量满的,这样一来,原创 2017-02-21 22:57:32 · 492 阅读 · 0 评论 -
POJ 2393 贪心
要考虑当前周的牛奶到底是在本周生产的还是以前生产储存下来的,只需要扫描一遍之前的数据,算出生产成本最少的方案就行了。#include #include #include #include #include #include #include #define MAX_N 10005using namespace std;struct data{ int c, y;原创 2017-02-21 23:30:13 · 306 阅读 · 0 评论 -
POJ 1017 Packets 贪心
贪心策略也就是优先放大的,再用小的填剩余的空子。我们注意到其实那些用来填空子的小格子其实也就只有1x1和2x2这两种,为什么呢?如果我们放6x6的,没有空位子。如果我们用5x5的,我们只能用1x1的来填。如果我们用4x4的,我们可以用2x2,1x1的来填。如果我们用3x3的我们还是可以用1x1,2x2的来填。这样一想,其实也就是考虑1x1,2x2的格子了。很简单的就可以得出一个关系。原创 2017-02-22 17:00:16 · 447 阅读 · 0 评论 -
POJ 3040 Allowance 贪心
很厉害的题目,没看题解之前一直忽略了题目中的一个性质,下一个硬币面额总是上一个硬币面额的倍数。我也不清楚如果看到了这一点之后我会不会想出答案。这道题目最优策略要考虑两个因素:1.取得相同面额时,硬币数量越少越好2.相同硬币数量时,面额越少越好(首先总面额要大于C)这个限制条件是很难满足的,我自己想的一些贪心策略都可以举反例证伪(举得反例有一些是不符合倍数要求的)。但是在题目特殊原创 2017-02-25 11:22:18 · 525 阅读 · 0 评论 -
POJ 1862 Stripies 贪心
看了一些题解,他们推出当n = 3时,是先用两个最大的数合并,再和第三个数合并,这样是最佳方案。然后就归纳出了n>3也是这样,每次取出两个最大的数字合并。可是我还是不太明白,n = 3的结论是怎么递推到n = 4的。并且他们还要用最大堆来维护,这也是不必要的。其实我们可以先尝试推出n = 4的结论,假如我们按照a b c d这样的顺序合并得出最后答案是 2sqrt(2sqrt(2s原创 2017-02-25 15:58:25 · 351 阅读 · 0 评论 -
POJ 3262 Protecting the Flowers 贪心
我们要考虑的问题就是当有两头牛t1 d1和t2 d2我们应该先把谁先运走假如先运1最后的损失就是 2 * t1 * d2假如先运2最后的损失就是 2 * t2 * d1假如先运1更好也就是2 * t1 * d2 即 (t1 / d1) 也就是我们优先运t / d小的牛所以先按照t / d从小到大排序一次,从前往后计算即可因为反复使用di + di+1 +..原创 2017-02-25 16:59:14 · 347 阅读 · 0 评论 -
ECNU CCCC选拔赛 D Pokémon and candies Pokémon 贪心
当你发现 Pokémon 热衷吃糖果的时候,你的糖果罐⼦早已被吃得空空如也。糖果资源是有限的,在你不愿意「氪⾦」的前提下,糖果是不会凭空增加的。但是吃糖果确实能让 Pokémon 长得更肥,更⼤;最重要的是,进化成更好的 Pokémon。于是你决定「氪⾦」。为⽅便起见,规定⼀加隆⾦币可以换⼀颗⽆⾊糖果。然⽽⽆⾊糖果不能直接给Pokémon ⾷⽤,你需要稍加烹饪:对 a 颗糖果进⾏热烹饪,可原创 2017-03-13 20:17:45 · 402 阅读 · 1 评论 -
(2017多校训练第一场)HDU - 6034 Balala Power! 贪心
很容易就想到把每个字母的权重都算出来,然后把权重最大的赋值成25,次大的赋值成24......以此类推。但是字符串长度最大为100000,也就是说一个字母的权重最大是26^100000次方左右,太大了,所以只能用字符串来存储权重。难道用字符串存储十进制的数字吗,那样就太麻烦了,实现起来还要高精度的加法和乘法。索性直接用26进制来存储!26^100000只需要100000位即可。字母原创 2017-07-26 15:07:03 · 330 阅读 · 0 评论