dp题 注意long long会卡内存 需要滚动dp
#include<bits/stdc++.h>
typedef long long ll;
const int mod=1e9+7;
using namespace std;
ll dp[2][4];
int main()
{
dp[0][0]=1;
dp[0][1]=1;
dp[0][2]=0;
dp[0][3]=0;
int n;
cin>>n;
for(int i=1;i<n;i++)
{
dp[i%2][0]=dp[(i-1)%2][1]%mod;
dp[i%2][1]=(dp[(i-1)%2][0]+dp[(i-1)%2][1]+dp[(i-1)%2][2]+dp[(i-1)%2][3])%mod;
dp[i%2][2]=(dp[(i-1)%2][0]+dp[(i-1)%2][3])%mod;
dp[i%2][3]=(dp[(i-1)%2][0]+dp[(i-1)%2][2])%mod;
}
cout<<dp[(n-1)%2][1]<<endl;
}