具体数学我劝你多读.
Raney 引理
对于长度为 n,所有元素和为 1 的整数序列 ai,其恰好存在 1 个循环位移满足所有前缀和大于 0.
证明:
-
存在性:
记 si=∑j≤iaj,取最大的 k 满足 ∀i,si≥sk,构造循环位移 ⟨bi⟩=⟨ak+1,ak+2,⋯,an,a1,a2,⋯,ak⟩,我们尝试说明 bi 的所有前缀和大于 0.记 ti=∑j≤ibi:
- 1≤i≤n−k 时,ti=sk+i−sk,由于 sk 是最小的前缀和中最靠后的,有 ti>0.
- n−k<i≤n 时,ti=sn−sk+si=1+(si−sk)>0.
-
唯一性:
假设有两个循环位移的起始位置分别是 i 和 j,且这两个循环位移均满足条件.不妨令 s0=0,有 sj−1−si−1>0,sn−sj−1>0,整理后得 sn>sj−1>si−1.考察 j 位移后 i−1 所在位置的前缀和,为 sn−sj−1+si−1=1+(si−1−sj−1)<1.又元素均为正整数,则 sn−sj−1+si−1≤0,与条件矛盾,故最多存在 1 个.
得证.
Raney 引理可以用来计算长度为 2n 的合法括号序列的个数,即卡特兰数.考察任意括号序列,将 ( 看作 1,) 看作 −1,括号序列合法的条件是对应的整数序列所有前缀和 ≥0.问题转化为计算有 n 个 1 和 n 个 −1,且所有前缀和 ≥0 的整数序列个数.考察任意合法的序列,我们在其前面添加一个 1,就转化成了一个有 n+1 个 1 和 n 个 −1,且所有前缀和 >0 的序列.考察任意一个有 n+1 个 1 和 n 个 −1 的序列,由 Raney 引理,它的所有循环移位中恰有 1 个满足所有前缀和 >0 的限制,问题转化为计算 n+1 个 1 和 n 个 −1 构成的圆排列的数量.由于序列的和为 1,任意一个圆排列一定对应着 2n+1 个不同的排列,故答案为 2n+11(n+12n+1)=n+11(n2n).
一个扩展
如果 ⟨a1,a2,⋯,an⟩ 满足 ai≤1,且 ∑iai=l>0,那么它的循环位移中恰好有 l 个满足所有前缀和大于 0.
证明:
若未加额外说明,变元均为整数.
考虑将序列进行周期延拓,即复制很多份接在后面.设延拓后的序列为 bi,记 ti=∑j≤ibj.
对于 ti 中的一个位置 p,我们称 1≤q≤n,q+αn=p 为 p 在原序列对应的位置.容易发现这样的 q 唯一,记作 op.op 被挪到最后的循环移位合法,等价于 ∀1≤i≤n,tp+i−tp>0,即 tp+i>tp,又 ti+n=ti+l>ti,可推出 ∀i>p,ti>tp.进一步的,我们有 ∀k≥0,∀i>op+kn,ti>top+kn.记 top=x,考虑 1≤y≤l,y+βl=x,显然 y 唯一,且 top+βn 是 y 最后一次出现的位置.由于 ai≤1,对于 1 到 l 的所有值,这样的位置都存在.设 lsty 是 y 在 ti 序列中最后出现的位置,对于所有 y,将 olsty 挪到最后的循环位移均合法.这样的位置恰好有 l 个,选取这些 lsty 就构造了 l 个合法的循环位移.而考虑任意不在这 l 个位置中的任意位置 r,一定存在 z>r 使得 tz=tr,使得 r 被挪到最后的循环位移一定不合法.