贪心
文章平均质量分 69
冷月残星
这个作者很懒,什么都没留下…
展开
-
贪心,STL,multiset(Alice and Bob,HDU 4268)
只想出了O(n^2)的算法。。。 A按宽升序排序。 B按高降序排序。 n^2循环,找到就{ans++;break;}。 超时。。 后来想用二分查找的,但没有抓住问题的本质,被二维的关系搞懵逼了,总把宽和高绑定在一起思考,很混乱。 想到上述方法也纯属抖机灵,没有想想为什么可以这样。 事实上应该解决一维后就放弃这一维,只考虑第二维。 上述方法的本质是从宽最小的开始找对手,找到能覆盖原创 2016-07-22 21:44:15 · 310 阅读 · 0 评论 -
贪心(Ball,HDU 5821)
又是很多人都做出来了的题目,自己却没有做出来。 主要是思维上的障碍。 一方面自己应该想好了再来写。 确定好时间复杂度,正确性,编码复杂度。有一定把握了再来写代码。 一开始想了个大概,然后开始写,一边写一边想,代码的讨论很复杂,写完后自己的数据过不了,改了很久,然后感觉讨论不清了,然后觉得交一发WA算了。然后交上去TLE,然后发现时间复杂度O(n^3)。 少动键盘吧。原创 2017-07-25 19:36:33 · 327 阅读 · 0 评论 -
贪心,括号序列(Rikka with Parenthesis II,HDU 5831)
判断一个括号序列是否合法,可以用栈来模拟。 就是左括号入栈,如果遇到右括号,但栈空或者不匹配那就错了。 如果最后栈空也错了。 本题只有一种括号,可以直接O(n)扫一遍判断。 一开始cnt=0 左括号cnt++ 右括号cnt-- 如果cnt为负,那就错了。 如果最后cnt不为0,那也错了。 或者说,首先左右括号的个数要相等。 而且对任意的下标k,其左边的左括号数一定要原创 2017-07-25 17:41:31 · 401 阅读 · 0 评论 -
贪心,模拟,构造(HDU 5414,CRB and String)
WA了好久。。 No写成了NO Yes写成了YES 读题:没问题 算法:光是正确构造出来一个结果是远远不够的,我们更应该考虑在构造的过程中所使用的算法(比如贪心)是否会使得后面的构造失败。 实现:没问题 细节:No写成了NO,Yes写成了YES 代码 #include #include #include using namespace std; const in原创 2017-07-22 14:16:48 · 272 阅读 · 0 评论 -
贪心,暴力,网络流,匹配(MZL's City,HDU 5352)
这个题目可以抽象成以下问题。 有一个M层的架子,每层最多放K颗珍珠,你有N个不同的珍珠,每颗珍珠都只能放在某些特定的层里,问怎么安排放置的方案,使得珍珠尽量往下层放(尽量往下层放的概念很模糊,准确一点讲就是字典序最小)。 思考之后觉得这是一个很动态的问题,考虑过动态规划,但是感觉不怎么好定义状态,更别提状态转移了。然后就考虑转贪心,思考了很多办法,最后想到了一个暴力的方法,能保证正确性原创 2017-07-10 10:00:39 · 420 阅读 · 0 评论 -
规律,模拟,贪心(Travelling Salesman Problem,HDU 5402)
显然行列有一个是奇数就可以全部走完。这种情况直接模拟就好。 否则的话,一定会有一个格子走不到。 多试几种情况就可以发现这个规律。 证明的话:http://blog.csdn.net/queuelovestack/article/details/47756605 就是对整个棋盘进行黑白二染色,如果行列相加为偶数,就染成黑色,否则染成白色。我们的路径一定是黑白相间。 当行列皆为偶数的时候我们原创 2017-07-16 20:13:35 · 265 阅读 · 0 评论 -
贪心,Dijkstra(The path,HDU 5385)
贪心构造距离,Dijkstra构造边。 有一些细节写错了,在遍历边的时候,把e.v写成了i,WA了一段时间。 一开始写代码的时候就要小心。 代码 #include #include #include using namespace std; const int maxn = 100010; const int inf = 0x3f3f3f3f; int n,m; in原创 2017-07-16 12:48:49 · 197 阅读 · 0 评论 -
贪心,暴力,递推,物品拆分(Delicious Apples,HDU 5303)
客观上来讲,之所以会没看清数据范围说明,或者要想比较久的时间才能想通,或者思考出了一些错误的算法,是因为不够熟练,所以才没有分配到足够的精力在看数据,或者想通一些很基本的原理,或者压根没想对一些很基本的原理。 主观上来讲,在检查读题的阶段,很多时候自己只是把已经知道的东西又验证了很多遍,这是十分低效的。自己更应该仔细地读一遍题目,带着在一字一句中寻找矛盾的心态去阅读才比较好。对于剩下的问题,就是原创 2017-06-03 16:19:34 · 348 阅读 · 0 评论 -
贪心,二分,半平面交(丛林警戒队,LA 4992)
RE的6种可能 1、数组开小了 2、数组越界了 3、除0了 4、递归爆栈了 5、指针 6、申请空间过多了。 还是感觉自己有问题,码得太多,想的太少,实践得更少。 自己先跟自己玩玩攻防游戏,多玩几盘,就知道正确的防守方法了,然后思路与代码就是分分钟的事情。 先抛开代码与算法不管,然后搞出一种手算的解决方案(像玩单机游戏那样去不断尝试),最后再想办法用代码去实现。原创 2017-02-02 20:41:05 · 401 阅读 · 0 评论 -
贪心加暴力(ZOJ 3715,Kindergarten Election)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3715 贪心加暴力,可以出奇迹。 之所以这句话那么流行,是因为贪心,暴力之类的算法会让人感到很低级,但又确实能解决很多问题。 哪怕是通过数很低的题目,也有可能是通过贪心,暴力之类的算法解决的。 注意数据规模,不大时可以考虑暴力+贪心原创 2017-04-25 09:51:34 · 382 阅读 · 0 评论 -
贪心(ZOJ 3778,Talented Chef)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778 给你n道菜,第i道菜需要a[i]步才能完成,厨师每次最多可以取m道不同的菜,各完成1步,问最少要多少次才能完成。 答案: 设a=max(a[i]),1 b=((∑a[i])-1)/m+1。步数和除以m,向上取整。 答案就是max(a,b)原创 2017-04-24 15:59:16 · 249 阅读 · 0 评论 -
贪心,优化(Sockets,cf 732e)
http://www.cnblogs.com/iRedBean/p/5975480.html 像这种O(n^2)匹配的问题一般可以用优先队列,集合或者多重集合优化成O(nlogn)。 贪心的思路很简单,先尝试匹配,然后每个socket添加一个adapter,继续,重复31次。最多加三十次就变成1了。 这么贪心为什么对呢。 添加adapter后的socket匹配潜力肯定是减弱了的转载 2016-10-19 20:06:07 · 509 阅读 · 2 评论 -
枚举,模拟(Too Much Money,cf Canada Cup 2016 E)
一开始想只用放某个大于等于所有硬币的硬币是最优。后来发现能出解但不一定是最优解。 当时就是想,第一次取的硬币的大小一定是大于等于最大的硬币。那么我就枚举所有可能的取值,如果都可以被凑出来,那就说明无解。如果凑不出来了,那就取最小的那个。当时觉得如果第一步都能凑出来,那么以后也一定能凑出来。如果第一步都凑不出来,那也就没有以后了。事实上,如果你放大硬币,这个推论确实是对的。然而可能会存在某个小硬币原创 2016-10-23 10:46:19 · 467 阅读 · 0 评论 -
【2016-北京赛区网络赛-I】枚举,贪心,优先队列,优化(导弹,hihocoder 1391)
比赛时暴力枚举,TEL。 然后尝试用滑动窗口优化,然后发现无法优化。 赛后才知道可以用优先队列来优化。 好可惜呀。 代码 #include using namespace std; typedef long long ll; ll TA,TB; ll x; ll N,M; struct dd { ll t,v,d; ll st,ed; dd(ll a,原创 2016-09-27 12:37:25 · 405 阅读 · 0 评论 -
高效(防线,uva 1471)
参考 http://blog.csdn.net/L123012013048/article/details/45054857 一开始用set弄,erase弄超时了。 后半部分的方法十分不错。 一方面思路用二分搜索代替了暴力枚举。 另一方面,这种技巧有时能代替低效的set,大大提高效率,今后解题都可以参考。 前面的滑窗也有许多小细节需要处理。 #include usi转载 2016-09-07 19:48:15 · 563 阅读 · 0 评论 -
贪心(Fabled Rooks,uva 11134)
一些参考 http://acm.lilingfei.com/uva-11134-fabled-rooks-%E4%BE%8B%E9%A2%988-4_67 http://blog.csdn.net/shuangde800/article/details/8653730 行和列无关的意思是,本题可以拆成两个完全独立的子问题,分别是行和列的问题转载 2016-09-02 00:20:47 · 481 阅读 · 1 评论 -
二分,贪心(Copying Books,uva 714)
最大值尽量小,二分加判断可不可行。这个方法十分重要。 判断方法用贪心。 一些优化: 二分的左边界为最大值,二分的右边界为和。 判断时发现不可行立刻返回。 字典序最小,从右往左贪心即可,因为若右边的多拿了左边的东西,那么左边就有机会拿更左边的东西。 分组不能为空集,所以贪心到后面组不够了,那就直接一人一组。 搞了很久,因为一些算法有问题,所以有死循环没发现。 代码原创 2016-09-12 17:21:16 · 327 阅读 · 0 评论 -
贪心(Elegant Construction,HDU 5813)
很容易想到按ai排序。 然后ai>i就不行。 然后就往前面连,保证恰好能到达ai个点。 看了官方题解就是往前a[i]个点都连边就好了。 由于有向无环,所以不可能到达比a[i]大的点,而小于等于a[i]的点我们又全都到达了。 我只想到了一个比较复杂的方法,算法错了,又改才对了。 就是讨论,如果a[i]=a[i-1]+1,那就直接连到i-1 如果a[i]=a[i-1],那就跟原创 2017-07-26 19:14:33 · 299 阅读 · 0 评论