AcWing 4408. 李白打酒加强版
原题链接
中等
作者:
jh_jju
,
2024-03-18 20:32:23
,
所有人可见
,
阅读 10
李白打酒加强版
#include<iostream>
using namespace std;
const int N=110,mod=1e9+7;
int f[N][N][N];
int n,m;
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<=m;i++){//当前遇到的花的数量
for(int j=0;j<=n;j++){//当前遇到的店的数量
for(int k=0;k<N;k++){//当前手里有k斗酒
if(i==0&&j==0&&k==2)f[i][j][k]=1;//初始时的状态为一种
if(i==0&&j==0)continue;
if(i>0){//上一次遇到的是花
f[i][j][k]=(f[i][j][k]+f[i-1][j][k+1])%mod;
}
if(j>0&&k%2==0){//上一次遇到的是店
f[i][j][k]=(f[i][j][k]+f[i][j-1][k/2])%mod;
}
}
}
}
cout<<f[m-1][n][1]<<endl;
return 0;
}