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