数学题
令 (A_n) 为 (2 imes 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)) .
把两个加起来,得到
[largeegin{aligned}A_n&=A_{n-1}+A_{n-2}+2left(sum_{i=0}^{n-3}F_i
ight)\&=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=sumlimits_{j=0}^iA_j),递推式变为
[large A_n=S_{n-1}+S_{n-3}
]
这个 (S) 可以在转移的时候递推求出来,这样就是 (O(n)) 的了,可以通过。
注意到这个式子里面很多 (A_i) 被反复加了,分别令 (n=k) 和 (n=k+1),得:
[largeegin{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_iend{aligned}
]
[largeegin{aligned}A_{k-4}&=sum_{i=0}^{k-2}A_i+sum_{i=0}^{k-4}A_i\&=A_{k-2}+A_{k-3}+2sum_{i=0}^{k-4}A_iend{aligned}
]
减一下,得到 (A_k-A_{k-1}=A_{k-1}+A_{k-3}),即 (A_k=2A_{k-1}+A_{k-3}) .
用这个式子递推即可。