AGC240G
ABC240G Teleporting Takahashi
组合意义天地灭,代数推导保平安。
根据对称性,从 \((0,0,0)\) 走到 \((x,y,z)\) 的方案数等于走到 \((|x|,|y|,|z|)\) 的方案数,下文假设 \(x,y,z>0\)。
最小步数显然是 \(x+y+z\),每一步都是将某一维加 1,如果我们在某一维添上一个减 1 的操作,为了让这一维达到最终目标,应添加一个加 1 的操作,因此增加的步数一定是 2 的倍数,这就是判无解的条件。
由于每多一个减 1 就一定多一个加 1,因此我们可以通过总步数算出一共走了多少次 -1,记为 \(cnt=\frac{n-(x+y+z)}{2}\)。
于是我们枚举第一维用了多少次 -1,以及第 2 维用了多少 -1,可以得到如下长相十分恐怖的式子:
\[\begin{aligned}
ans=\sum_{i=0}^{cnt}{{n}\choose{x+i}}{{n-(x+i)}\choose{i}}\sum_{j=0}^{cnt-i}{{n-(x+2i)}\choose{y+j}}{{n-(x+2i)-(y+j)}\choose{j}}
{{n-(x+2i)-(y+2j)}\choose{z+cnt-i-j}}
\end{aligned}
\]
尝试化简后面那坨式子,暴力拆开组合数:
\[\begin{aligned}
W &=\sum_{j=0}^{cnt-i}{{n-(x+2i)}\choose{y+j}}{{n-(x-2i)-(y+j)}\choose{j}}{{n-(x-2i)-(y+2j)}\choose{z+cnt-i-j}}\\
&=\sum_{j=0}^{cnt-i}\frac{(n-(x+2i))!}{(y+j)!j!(z+cnt-i-j)!(cnt-i-j)!}\\
&=(n-(x+2i))!\sum_{j=0}^{cnt-i}\frac{1}{(y+j)!j!(z+cnt-i-j)!(cnt-i-j)!}\\
\end{aligned}
\]
把后面凑成新的二项式系数:
\[\begin{aligned}
W&=\frac{(n-(x+2i))!}{(cnt+y-i)!(cnt+z-i)!}\sum_{j=0}^{cnt-i}\frac{(cnt+y-i)!}{(y+j)!(cnt-i-j)!}\frac{(cnt+z-i)!}{j!(z+cnt-i-j)!}\\
&=\frac{(n-(x+2i))!}{(cnt+y-i)!(cnt+z-i)!}\sum_{j=0}^{cnt-i}{{cnt+y-i}\choose{y+j}}{{cnt+z-i}\choose{z+cnt-i-j}}\\
&=\frac{(n-(x+2i))!}{(cnt+y-i)!(cnt+z-i)!}{{2cnt+y+z-2i}\choose{cnt+y+z-i}}
\end{aligned}
\]
其中最后一步用到了范德蒙德卷积公式。
于是枚举 i 就能做到 \(\mathcal{O}(n)\) 计算。
code