贪心 系统复习和加深

旧知复习

T178604 最大乘积

显然,不会拆1,而数字拆得越多肯定乘积更大,因为考虑任何一个数x,若a+b=x,则肯定有ab>x。
故从2开始往上拆(2 3 4 5...)但是最后可能剩下一些拆不出,则应该加1到最大的几个数上(和上面同理,加到一个数上面肯定不会这么优)做这种题可以先拆一些数找规律,然后举例子(手玩找性质)


T178609 最小数

考虑一个很显然的贪心结论:我们要让高位尽可能小。
那么有一个策略:从最高位开始,搜索如何删除可以让最高位最小且删除次数尽量少,然后再考虑次高位令其最小。


T178610 最大数

考虑排序,但是不是按照数的大小排序。
一种很妙的办法,对于相邻的两个数,比较谁在前面比较优秀。因为这两个相邻数的位置关系是不会影响其他数的位置关系的。比较也很简单,直接比较AB和BA谁更大即可。


T178607 最大乘积2

还是和上面那个题差不多,大的数肯定还是比两个较小数差,明显大于5的时候都有这个结论。
然而4却应该拆成两个2(题目要求)。
3不应该拆成1和2的乘积。
所以最后答案就只有3和2了。
考虑3多还是2多比较好,显然3多更好(随便举个栗子就知道)
于是一直拆3,直到小于5为止。
剩下的数是4就变成两个2,否则直接加进可重集即可。


T178612 线段覆盖

对右端点排序,然后直接扫描,如果能够加进去就直接加进去就可以了。
因为:右端点是单调不降的,这种情况下冲突线段优先选择右端点最左边的加入答案,可以保证后面可以加进去的线段最多。
是一个好题诶


T178614 纸牌游戏

两种状态依次枚举取最小的。
然后每次移动肯定一步到位。
考虑最左边的一定移向右边一定数量以满足条件(可以是移动负数),满足条件后右边一定不会移向它了,于是又只有移向更右边。这样就一定是最优策略。


T178617 最大子段和

DP裸题,但是可以用贪心来做。
因为要连续,所以选择的这一段的每一个位置的前缀和都应该大于(等于)0,否则这一段就可以不选答案更大。所以我们可以双指针维护,如果\(s_r<0(<=0)\),就把\(l\)移到\(r+1\),然后r继续走。这样可以保证一定能找到ans。

T178618 排座椅(maybe wrong)

直接排序就完了。


T178613 冲浪

去年的一个题,从最后一秒开始倒序考虑,每秒选择最快乐的。如果某一秒不能选了就退出。


T178619 珍珠项链

一个naive的想法,断成二倍链,直接从第一个位置开始作为起点往后面枚举。
但是某个位置不满足条件咋办?我们可以从最小表示法获得启发直接跳过已经枚举过的点,以新点作为起点。因为前面的点都不可能满足条件了。


过河问题


过河问题二

本题为付费内容。(雾)


国王游戏

我们要考虑相邻的两个人怎么排对总答案有什么贡献,即交不交换的贡献情况哪一种更优秀。然后通过某种假设得到相邻两个人的最优结论,也就是全局最优结论。


更多神题

CF1396B Stoned Game

其实是个博弈题。
考虑如果有一堆石子总数大于其他石子总数,先手一直取这一堆就能胜利。
否则所有石子都会被取完,直接判断石子总数的奇偶性即可。
考虑反证,如果最后一堆石子没有被取完,一定出现了上述有一堆石子总数大于其他石子总数的情况,但是另一个人是不会允许这样的情况发生的,他会一直取最多石子的那一堆,这样只要初态不符合,就不可能会出现这种情况。

posted @ 2021-09-01 15:50  lei_yu  阅读(26)  评论(0编辑  收藏  举报