除了第一篇题解外,都没有证明这道题“直接在最长回文半径上拓展才可能是最优答案”的重要性质。没有这个性质根本写不了这题。
我给一下我的证明:
考虑回文中心点 i 在往下的那个点 j 左边的情况(即 i<j),右边或 i=j 可以类似考虑。设 i 的最长回文半径为 l。那么显然 j≤i+l。
那么我们可以发现,Bj 必须等于 A2i−j−1,同理 Bj+1=A2i−j−2,以此类推,Bi+l−1=Ai−l。又因为 ∀k∈[i,i+l],Ak=A2i−k,所以 Ai+l=Ai−l。我们可以发现,要想这个中心点 i、下去点 j 的情况成为答案,Bi+l−1=Ai+l。
但是这样,原来的方案下一步拓展必须是 Bi+l。这也可以由 Ai+l 来完成,并且也合法。综上,原方案被采用最长回文半径的方法完美覆盖,故采用最长回文半径的情况中一定有最优值。