E. Tetrahedron
Posted ZangYH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了E. Tetrahedron相关的知识,希望对你有一定的参考价值。
题目链接:https://codeforces.com/problemset/problem/166/E
解题思路:第n步要回到D点,所以在第n-1步除了当前点和D点,还有两个点可以走,在第n-2步,出了当前点还有三个点可以走,所以就可以推出递推公式dp[i]=2*dp[i-1]+3*dp[i-2]
#include<bits/stdc++.h> using namespace std; const int maxn=1e7+10; int n; long long dp[maxn]; void solve() dp[1]=0; dp[2]=3; for(int i=3;i<=n;i++) dp[i]=(dp[i-1]*2+dp[i-2]*3)%1000000007; cout<<dp[n]; return ; void INPUT() scanf("%d",&n); solve(); int main() INPUT(); //solve(); return 0;
内存超限代码:
#include<bits/stdc++.h> using namespace std; const int maxn=1e7+10; int n; long long dp[maxn][4]; void solve() for(int i=1;i<=3;i++)dp[1][i]=1; for(int i=2;i<=n-1;i++) for(int j=1;j<=4;j++) for(int k=1;k<=4;k++) if(k!=j) dp[i][j]+=dp[i-1][k]; long long res=0; for(int i=1;i<=3;i++) res=(res+dp[n-1][i])%1000000007; cout<<res; return ; void INPUT() scanf("%d",&n); solve(); int main() INPUT(); //solve(); return 0;
以上是关于E. Tetrahedron的主要内容,如果未能解决你的问题,请参考以下文章