浅谈 Raney 引理

由于网上的好像有点看不懂,所以自己来写一个总结吧

Raney 引理

对于一个序列 \(a\),满足 \(\sum_{i=1}^n a_i=1\) ,那么 \(a\) 的所有 \(n\) 个 cyclic-shifts(也就是所有循环移位) 中恰好有一个使得所有真前缀和为正。

证明:

手玩一下小样例

\(a=(1,1,2,-3,2)\) 时,由于考虑循环移位所以我们套路地将其倍长,得到 \(A=(-1,1,2,-3,2,-1,1,2,-3,2)\),算出其前缀和为 \(S=(-1,0,2,-1,1,0,1,3,0,2)\) .

画出 \((i,S_i)\) 的折线草图(中间这条分割线左边就是原来的,右边就是自己倍长之后的前缀和):

首先明确一点,我们的循环移位的起点一定是在分割线左侧找。

img

小发现:由于左边的值是固定的(\(\sum a_i=1\))所以右边相当于左边的图像向上移一格。

由于我们希望所有真前缀和为正,那么我们想让循环移位的起点的前缀和最小(这样后面减前面才会更大嘛)。

于是我们会选左侧最低,在最低的同时最靠右的点 \(E\) 作为循环移位的起点.

根据我们的小发现同时点 \(E\) 是左侧的最低点,可以得到选择点 \(E\) 是满足要求的

现在来证明其他点不满足要求。

对于左侧在 \(E\) 左边的点(\(A,B,C,D\)),他们由于要么比 \(E\) 高,要么和 \(E\) 一样高,所以都无法使前缀和取到正值(这也就解释了我们选取成功决策点时为什么要在最低的同时尽量靠右)

对于左侧在 \(E\) 右边的点(\(F\)),我们考虑找到 \(E\) 点倍长后的对应点 \(J\)(由小发现可知,其 \(y\) 值等于 \(E\)\(y\) 值加一),既然点 \(E\) 最低且靠右,那么 \(F\) 点一定在 \(E\) 的上方,那么 \(F\) 要么在 \(J\) 的上方,要么和 \(J\) 一样高,无法使前缀和取到正值。

posted @ 2026-08-17 10:49  tyccyt  阅读(8)  评论(0)    收藏  举报