其他分享
首页 > 其他分享> > DTOJ #5932. Counting 题解

DTOJ #5932. Counting 题解

作者:互联网

小学生也能看懂版题解

写出递推式:

\[f_{i,j} = f_{i-1, j-1} + f_{i-1, j} + f_{i-1, j+1} \]

然后有 \(O(m^3\log n)\) 的矩阵快速幂做法,相信大家都会。

递推不好/无法分析,考虑转生成函数。

\[\begin{aligned} F_0(x) &= 1\\ F_i(x) &= F_{i-1}(x)\times(x + 1 + \frac{1}{x})\\ F_n(x) &= (x+1+\frac{1}{x}) ^ n \end{aligned} \]

如果不考虑 \(m\) 和 \(-1\) 的限制,答案就是 \([x^0]F_n(x)\)。

首先考虑怎么求 \([x^0]F_n(x)\)。

\[[x^0]F_n(x) = [x^0](x+1+\frac{1}{x})^n=[x^n](x^2+x+1)^n \]

令 \(G = x^2 + x + 1, H = G^n\)。

开导:\(G'=2x+1\)。

继续导:

\[\begin{aligned} H' &=nG^{n-1}G'\\ H'G&=nG^nG'=nHG'\\ \end{aligned} \]

把 \(H\) 写成形式幂级数:

\[\begin{aligned} H(x) &= \sum_{i\ge 0}^{\infty} h_ix^i\\ H'(x) &= \sum_{i\ge 0}^{\infty}(i+1)h_{i+1}x^i \end{aligned} \]

对方程左右两边考虑 \([x^k]\),有:

\[\begin{aligned} (k+1)h_{k+1}+kh_k+(k-1)h_{k-1}&=n(h_k + 2h_{k-1})\\ (k+1)h_{k+1}&=(n-k)h_k+(2n-k+1)h_{k-1} \end{aligned} \]

得到了一个 \(O(n)\) 的递推式,显然你有 \(h_0=1,h_1=\binom{n}{1}\)。

此时的 \(h_i\) 是 \([x^{i-n}]F_n(x)\),换句话说是最后走到 \(i-n\) 的方案数。

考虑加上原来的 \(-1\) 和 \(m\) 限制,容斥。

类比经典不经过 \(y=x+m\) 的做法。从 \(0\) 开始不断对 \(m\) 或 \(-1\) 交替作对称,累加答案即可。

标签:begin,DTOJ,end,题解,nG,5932,frac,aligned,递推
来源: https://www.cnblogs.com/lingfunny/p/16342426.html