HDU 2501 Tiling_easy version
作者:互联网
链接
Tiling_easy version - http://acm.hdu.edu.cn/showproblem.php?pid=2501
分析
- 整体转换图
- 局部转换图:(循环节 -> 递推节)此图中,
- n-2的 “出” 是完整的
- n的 “入” 是完整的
- n-1的“出”与“入”都是不完整的
- 但三者的关系是完整的
-
递推方程:F(n) = F(n-1) + 2*F(n-2)
-
递推矩阵 :
( S n S n − 1 ) = ( 1 1 1 0 ) × ( S n − 1 S n − 2 ) = ( 1 1 1 0 ) n − 2 × ( S 2 S 1 ) = ( 1 1 1 0 ) n − 2 × ( 3 1 ) \begin{pmatrix} S_n \\ S_{n-1} \\ \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 0 \\ \end{pmatrix} \times \begin{pmatrix} S_{n-1} \\ S_{n-2} \\ \end{pmatrix} = { \begin{pmatrix} 1 & 1 \\ 1 & 0 \\ \end{pmatrix} }^{n-2} \times \begin{pmatrix} S_2 \\ S_1 \\ \end{pmatrix} = { \begin{pmatrix} 1 & 1 \\ 1 & 0 \\ \end{pmatrix} }^{n-2} \times \begin{pmatrix} 3 \\ 1 \\ \end{pmatrix} (SnSn−1)=(1110)×(Sn−1Sn−2)=(1110)n−2×(S2S1)=(1110)n−2×(31)
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans[35];
int t;
int main(){
ans[1]=1;
ans[2]=3;
for(int i=3;i<=30;i++) {
ans[i]=ans[i-1]+2*ans[i-2];
}
scanf("%d",&t);
while(t--) {
int a;
scanf("%d",&a);
printf("%lld\n",ans[a]);
}
return 0;
}
标签:HDU,end,int,begin,version,pmatrix,Sn,ans,Tiling 来源: https://blog.csdn.net/jpphy0/article/details/116844062