有后向前填空

xmuoj

#include<iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const int N = 1e6 + 4;
ll f[N][10];
void work(){
	int n; cin >> n;
    for(int i = 1; i <= n; i++)
    	for(int j = 1; j <= 5; j++) f[i][j] = 0;
    f[n][1] = f[n][2] = f[n][3] = f[n][4] = f[n][5] = 1;
    for(int i = n - 1; i >= 1; i--){
    	f[i][1] = (f[i][1] + f[i + 1][2]) % mod;
        f[i][2] = (f[i][2] + f[i + 1][1] + f[i + 1][3]) % mod;
        f[i][3] = (f[i][3] + f[i + 1][1] + f[i + 1][2] + f[i + 1][4] + f[i + 1][5]) % mod;
        f[i][4] = (f[i][4] + f[i + 1][3] + f[i + 1][5]) % mod;
        f[i][5] = (f[i][5] + f[i + 1][1]) % mod;
    }
    cout<<((f[1][1] + f[1][2] + f[1][3] + f[1][4] + f[1][5]) % mod)<<endl;
}
int main(){
	int _; cin >> _;
    while(_--) work();
}
posted @ 2022-03-25 10:36  兮何其  阅读(27)  评论(0)    收藏  举报