题解 P3571 【[POI2014]SUP-Supercomputer】
[POI2014]SUP-Supercomputer
1 一些思考
之前做这题是因为做了一套 CSP-S 模拟题
然后被这道题坑了(惨兮兮)
出那套题的人估计自己也没有想清楚,所有部分分的解法都是错的(各种知世不对的贪心)...
当然满分做法是正确的
但是在目前看到的各种证明中都是各种错误贪心(狗头保命
对于满分做法的解释也是模糊不清(贪心+显然
所以来证明下最优方案的存在性
可能有锅,轻喷
2 题意
略
3 Solution
3.1 最优方案
假设存在一种策略满足下面条件
- 能够使得前
x 层用x 步删完 (一) - 后面每次都可以删除
k 个节点 (二)
那么这样的策略必然是最优的
证明很显然,前
那么现在的问题是是否存在这样一种策略满足上面的条件
3.2 最优方案存在的证明
假设足够聪明的你当前已经取完了前
这样的方案是很好构造的,因为并没有要求前面
显然的,上方必然存在另外一个满足已经取完了前
没错,这里我们不要求后面节点可以每次删除
我们取最近的一个这样的状态
那么,对于
-
y-x>y'-x' -
y-x=y'-x'
3.2.1 第一种情况
对于第一种情况,我们用
对于足够聪明的你,显然会尽量不让这
那么如果当前的状态使得你不得不被 “卡住” ,那么被 “卡住” 时,从 最近的一个这样的状态 x' 不符,产生矛盾,故不成立
那么在第一种情况中,可以将
3.2.2 第二种情况
对于第二种情况,我们利用
在这里需要分别讨论:
假设
假设
显然每层
那么,通过 “补” 的方式,也使得
3.2.3 总结
所以说,通过转移到最近的
倘若一直没有找到满足(一)的层,而第一层必然是满足(一)的,我们令第一层为
故必然存在这样的层
4 代码
略