请教一下各位神犇, 代码:
#include<bits/stdc++.h>
#define f(i,a,b) for(int i = a ; i<=b ; i++)
#define maxn 10
#define maxm 1000005
#define P 1000000007
using namespace std;
long long n,m,delta,ans,a[maxm][maxn];
typedef long long ll;
bool same[maxm][maxn];
void work(int x,int y){
if(y == n+1){
ans = (ans+1)%P;
return ;
}
int tx = x+1,ty = y;
if(tx>=m+1) tx = 1,ty+=1;
f(i,0,1){
if(i<a[x+1][y-1]) continue;
if(same[x][y-1] && y-1>=1 && x+1<=m && i!=a[x+1][y-1]) continue;
a[x][y] = i;
same[x][y] = a[x][y-1] == a[x-1][y]||same[x-1][y]||same[x][y-1];
work(tx,ty);
}
}
long long kkksc03(int x,int y,int p){
long long ans = 1;
for(;y;y>>=1,x = x*x%p) if(y&1) ans = ans*x%p;
return ans;
}
int main(){
cin>>n>>m;
if(n>m) swap(n,m);
delta = max(0ll,m-(n+1));
m = min(m,n+1);
f(i,1,n)a[0][i] = 8;
f(i,1,n)a[i][0] = -8;
work(1,1);
if(n == 1) cout<<1ll*ans*kkksc03(2,delta,P)%P<<endl;
else cout<<1ll*ans*kkksc03(3,delta,P)%P<<endl;
return 0;
}
不吸氧80pts,吸氧100pts
如何让不吸氧能100pts?