贪心证明法试举例(持续更新ing)

贪心证明法试举例

1.反证法

假设与结论相反的情况,证明条件不符,结论得证

2.替换法求优法

每次替换最优解的某个步骤若得到的都是更差的解则表明该解法最优

例1:acw125 耍杂技的牛

例2:NOIP2012 国王游戏

两题的结论很类似,只是加减换乘除

75K3z8.png

感性认识:越靠后危险值在\(w_i+s_i\)相同的情况下越大容易成为最大值,于是靠后的\(w_i+s_i\)越大越能使最大值最小,得到贪心策略

贪心策略:按\(w_i+s_i\)排序,从上到下从小到大

证明:

第i个位置 第i+1个位置
调整前 \(\sum_{k=1}^{i-1} w_i-s_i\) \(\sum_{k=1}^{i} w_i-s_{i+1}\)
调整后 \(\sum_{k=1}^{i-1} w_i-s_{i+1}\) \(\sum_{k=1}^{i-1} w_i+w_{i+1}-s_{i}\)
调整前 \(-s_i\) \(w_i-s_{i+1}\)
调整后 \(-s_{i+1}\) $ w_{i+1}-s_{i}$
调整前 \(s_{i+1}\) \(w_i+s_{i}\)
调整后 \(s_{i}\) $ w_{i+1}+s_{i+1}$

(表格:第i第i+1位置危险值调整前后表示及其化简结果)

\(w_i+s_i<w_{i+1}+s_{i+1}\)调整前第\(i和i+1\)危险系数两个取最大值比调整后的小

反之调整后更优,则保持\(w_i+s_i\)小的靠上方会使相邻最大值尽量小。

全局最大值最小:按照《进阶指南》的思想:每次调整减少\(w_i+s_i>w_{i+1}+s_{i+1}\)的逆序对都使答案更优,于是像冒泡排序那样交换排序得到的每个相邻\(max(w_1+⋅⋅⋅+w_{i−1}−s_i,w_1+⋅⋅⋅+w_i−s_{i+1})\)的最小值,而全局最大值就是这些相邻对最大值之一,于是全局最大值能够最小

3.数学归纳法

从头到尾或从尾到头进行归纳

若第k步成立时第k+1步也成立,则只要第一步成立所有的都成立

4.证明当前解(cnt)等价于最优解(ans)

\[cnt\iff ans \]

\[cnt>=ans\\ cnt<=ans \]

例1: acw 905. 区间选点

7c7CrD.png

贪心策略:将区间右端从小到大排序,每次判断是否当前区间已有点,若无则将右端点作为点,有则通过

以此策略得到的点数为cnt,最优解为ans

最优解为最少点数ans<=cnt

而cnt是覆盖cnt个不重合的区间,每个的左端点与最近前一个右端点更小的区间右端点错开,覆盖cnt个不重合的区间和覆盖重合的点需要至少cnt个

所有方案点数>=cnt ans是其中一种方案,也具有这种性质,则ans>=cnt

则ans==cnt成立

posted @ 2022-01-23 19:55  多巴胺不耐受仿生人  阅读(231)  评论(0)    收藏  举报