E. Tetrahedron
大致题意:
一个正四面体,一只蚂蚁每一时刻只能停留在顶点处,一秒只能移动1并且不能停留
求从D出发经过n秒后回到D的路径数(mod1e9+7)
解题思路:
状态表示:f[i] 表示第i秒的方案数
分析:对于第i-1秒,有两种选择,即除当前点和起点外的另外两个点,最后一步回到起点
对于第i-2秒,有三种选择,即除当前点的另外三个点
转移方程:f[i]=(2*f[i-1]+3*f[i-2])%mod
答案为f[n]
AC代码:
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define debug(c) cout << #c << " = " << c << endl;
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 1e7 + 10;
ll n, m;
ll f[N];
int main(void) //递推
{
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
f[1] = 0; f[2] = 3;
for (int i = 3; i <= n; ++i)
f[i] = (f[i - 1] * 2 + f[i - 2] * 3) % mod;
cout << f[n] << endl;
return 0;
}