数学题

\(A_n\)\(2\times n\) 的墙壁放满块的方案数,考虑递推。
显然 \(A_0=1\),我们令对于 \(k<0\)\(A_k=0\) .

放直线型的块非常好递推:

此时答案即为 \(A_{n-1}+A_{n-2}\) .

接下来考虑放 L 型块的:

显然,两个 L 型块可以并成长方形:

但是也可以通过摆几个横着的块再合并:

所以此时答案为 \(2(A_{n-3}+A_{n-4}+\cdots+A_0)\) .

把两个加起来,得到

\[\large\begin{aligned}A_n&=A_{n-1}+A_{n-2}+2\left(\sum_{i=0}^{n-3}F_i\right)\\&=A_{n-1}+A_{n-2}+\sum_{i=0}^{n-3}A_i+\sum_{i=0}^{n-3}A_i\\&=\sum_{i=0}^{n-1}A_i+\sum_{i=0}^{n-3}A_i&\end{aligned} \]

如果直接暴力转移每次是 \(O(n)\) 的,总复杂度也就是 \(O(n^2)\) 的,显然会 tle。

注意到这是静态区间求和,所以考虑前缀和。令 \(S_i=\sum\limits_{j=0}^iA_j\),递推式变为

\[\large A_n=S_{n-1}+S_{n-3} \]

这个 \(S\) 可以在转移的时候递推求出来,这样就是 \(O(n)\) 的了,可以通过。

注意到这个式子里面很多 \(A_i\) 被反复加了,分别令 \(n=k\)\(n=k+1\),得:

\[\large\begin{aligned}A_k&=\sum_{i=0}^{k-1}A_i+\sum_{i=0}^{k-3}A_i\\&=A_{k-1}+A_{k-2}+2A_{k-3}+\sum_{i=0}^{k-4}A_i\end{aligned} \]
\[\large\begin{aligned}A_{k-4}&=\sum_{i=0}^{k-2}A_i+\sum_{i=0}^{k-4}A_i\\&=A_{k-2}+A_{k-3}+2\sum_{i=0}^{k-4}A_i\end{aligned} \]

减一下,得到 \(A_k-A_{k-1}=A_{k-1}+A_{k-3}\),即 \(A_k=2A_{k-1}+A_{k-3}\) .

用这个式子递推即可。