题解 P3750 【[六省联考2017]分手是祝愿】
Rainy_chen · · 题解
在Flandre_495的题解通过后这题应该就已经有五篇题解了。所以我也不太想说这题的具体思路,其他题解说的已经很明白了。
Flandre_495说的rainy就是我
这里我们来考虑一些比较特殊的事情:
我们如何证明一个局面的最优解是从后往前扫一遍能关就关?
实际上我们只能知道从后往前扫一遍必然是一个合法的解法,也就是说它是一个可行解,但我们想要证明它是唯一解。
我们可以认为一个合法的解法是一个可重集合
例如对于
定义为可重集合是因为
我们发现实际上一个操作重复两次就相当于这两次操作没有进行,因为它会使同样的几个位置上的数
考虑一个解法的实质,其代表了一个
很明显我们可以对任何一个解法构造这样一个向量,并且每一个解法能解决的局面是唯一的,于是我们知道解法的集合
接下来我们想证明的其实是这个映射是单射。
我们已经知道任何一个解法只能对应一个局面,并且解法的数量(
我们先假设其为满射,证明其为单射。使用反证法,假设其不为单射。
那么就一定存在两个不同的解法集合对应了同一个局面,此时必然会出现局面没有被对应到,于是此时映射不是一个满射,与条件矛盾,所以其为单射。
之后我们发现对于任意一个局面,按照如上所述的构造方法一定能构造出一个解法,于是可以知道其为满射。于是其为单射。(当然它也是双射)
换句话而言,对于任何一个局面,其解法是唯一的,而我们做的任何操作都相当于向这个这个局面的解法追加了一个操作。
而解决一个局面的唯一方法就是进行数次追加后将这个集合变为空集,这基于上面对映射为单射的证明。
如果我们进行的操作是解法中的某个操作,那么解法中的这个操作会和我们进行的这个操作抵消,使得解法的集合的大小变为
如果我们进行的操作不属于这个解法中的操作,那么这个解法在添加这个操作后就变成了一个有