#include <iostream>
#include <cstdio>
using namespace std;
//线段树区间更新模板
//不写注释的模板都是傻,1年后保证自己看不懂
const int N = 50005;
int dp[2][N];//dp[i][j]代表第j个放i,i为0或者为1
const int mod=1000000007;
int main()
{
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
dp[0][0]=1;
dp[1][0]=1;
for(int l=1;l<=n;l++)
{
for(int i=1;i<=(a>l?l:a);i++)
{
dp[0][l]+=dp[1][l-i];
dp[0][l]%=mod;
}
for(int i=1;i<=(b>l?l:b);i++)
{
dp[1][l]+=dp[0][l-i];
dp[1][l]%=mod;
}
}
printf("%d\n",(dp[0][n]+dp[1][n])%mod);
return 0;
}
URAL - 2018 The Debut Album(状态dp 记忆化搜索)
最新推荐文章于 2019-08-07 20:38:50 发布