这最开始由大佬 Turgen 在这篇帖子中提出。但个人认为该帖子中证明的核心思想并不是很突出,细节部分也有疑似笔误的地方,故再次进行总结。
证明:
设某次枚举中两个区间分别为集合 A 和 B。需要指出的是,在接下来的证明中,我们将不区分 A 和 B 的前后顺序,因为如果顺序不合适,交换其表示的区间即可。
首先,枚举算法已经保证 A=B 且 A,B=∅,那么这时候再出现重叠,就有且只有两种情况了:
A⫋B
或
A∩B∈/{A,B,∅}
也就是一个区间完全包含了另一个区间,或者两区间有一部分是重叠的。
对于第一种情况,为方便起见,我们用小写字母表示正整数,就可以设 A={b,c},B={a,b,c,d}。
需要知道有引理:
设两正整数 x 和 y,则有 x+y>∣x−y∣。
此时,差距为 a+d,而如果取 A={a},B={d},则差距为∣a−d∣。根据引理,后者更优,所以不合法的前者永远不会成为最终答案。
对于第二种情况,设 A={a,b,c},B={b,c,d}。此时,差距为∣a−d∣,而如果取 A={a},B={d},同样可以出现∣a−d∣的差距。也就是说,虽然差距的来源,也就是选择的区间,是不合法的,但是这个差距是一定可以通过选择其他合法区间合法出现的,所以就算用这个差距来更新答案了,答案的正确性也是不受影响的。