Luogu P1012 [NOIP1998 提高组] 拼数 贪心可行性证明
本文只证明贪心可行性
即为什么按照 $A+B<B+A$ 的比较方式可以排序,其中 $A,B$ 是string类型变量
设该偏序为 $\triangleright $
必须要证明这个定义下$\triangleright $ 的传递性:即如果 $A\triangleright B\triangleright C$ 那么 $A\triangleright C$
证明如下:
首先设 $A,B,C$ 长度相等,$A\triangleright B\triangleright C$(下文中 $AB$ 表示字符串 $A,B$ 首位拼接)
由 $A\triangleright B$ 那么 $AB<BA$ 由于 $A,B$ 长度相同,则必定 $\exists i$ 使得 $A[i]<B[i]$ 且对 $\forall j<i$ 有 $A[j]=B[j]$
同理 $\exists p$ 使得 $B[p]<C[p]$ 且对 $\forall q<p$ 有 $B[q]=C[q]$
若 $i<p$ 则 $A[i]<B[i]=C[i]$ 且对 $\forall j<i$ 有 $A[j]=C[j]$ 即 $AC<CA$ 即 $A<C$
若 $i=p$ 则 $A[i]<B[i]<C[p]$ 且对 $\forall j<i$ 有 $A[j]=C[j]$ 即 $AC<CA$ 即 $A<C$
若 $i>p$ 则 $A[p]=B[p]<C[p]$ 且对 $\forall q<p$ 有 $A[q]=C[q]$ 即 $AC<CA$ 即 $A<C$
综上,当 $A,B,C$ 长度相同时,该偏序存在传递性
接下来证明 $\forall A,B$ , $A\triangleright B \Leftrightarrow AA...A\triangleright B$ ,其中 $A,B$ 长度可以不同
先证明 $\Rightarrow $ :
归纳法,当 $A\triangleright B$ 时,$AB<BA$,$\Rightarrow$ $AAB<ABA$ 且 $ABA<BAA$
则 $AAB<BAA$;
由 $AB<BA$ $\Rightarrow$ $AAAB<AABA$
又 $AAB<BAA$ $\Rightarrow$ $AABA<BAAA$
则 $AAAB<BAAA$
如此归纳,可知 $A\triangleright B$ $\Rightarrow$ $AA...A\triangleright B$
同理可证,$A\triangleright B$ $\Rightarrow$ $A\triangleright BB...B$ ...<1>
再证明 $\Leftarrow $:
反证法,若 $AA...A\triangleright B$ 即 $AA...AB<BA...AA$ 时,如果没有 $A\triangleright B$
则 $B\triangleright A$ 或者 $AB=BA$
若 $AB=BA$ ,则 $AA...AB=AA...BA=AA..BAA=...=AB...AA=BA...AA$,矛盾
接下来只要证 $B\triangleright A$ 时矛盾
若 $B\triangleright A$ 则 $B\triangleright AA...A$ (由<1>可得)
则 $BA...AA<AA...AB$,矛盾
综上,$A\triangleright B \Leftrightarrow AA...A\triangleright B$
则 $A\triangleright B \Leftrightarrow AA...A\triangleright BB...B$ ($A,B$重复次数可以不相同)
当 $A,B,C$ 长度不同时,对 $A,B,C$ 分别进行适当的延拓变为长度相同的 $xA,yB,zC$ 即可进行比较
若 $A\triangleright B\triangleright C$,则 $xA\triangleright yB\triangleright zC$ 则 $xA\triangleright zC$ 则 $A\triangleright C$
这样,$A\triangleright B\triangleright C$ 可得 $A\triangleright C$,偏序的传递性成立
Q.E.D.