G - The Debut Album URAL - 2018(dp)
2017-05-14 21:23
375 查看
Pop-group “Pink elephant” entered on recording their debut album. In fact they have only two songs: “My love” and “I miss you”, but each of them has a large number of remixes.
The producer of the group said that the album should consist of
n remixes. On second thoughts the musicians decided that the album will be of interest only if there are no more than
a remixes on “My love” in a row and no more than b remixes on “I miss you” in a row. Otherwise, there is a risk that even the most devoted fans won’t listen to the disk up to the end.
How many different variants to record the album of interest from
n remixes exist? A variant is a sequence of integers 1 and 2, where ones denote remixes on “My love” and twos denote remixes on “I miss you”. Two variants are considered different if for some
i in one variant at i-th place stands one and in another variant at the same place stands two.
Input
The only line contains integers n, a,
b (1 ≤ a, b ≤ 300; max( a, b) + 1 ≤
n ≤ 50 000).
Output
Output the number of different record variants modulo 10
9+7.
Example
#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=50000+5;
const int INF=1e9+7;
int dp[maxn][5];
int main()
{
int n,a,b;
while(cin>>n>>a>>b)
{
memset(dp,0,sizeof(dp));
dp[0][1]=1;
dp[0][2]=1;
for(int i=0;i<=n;i++)
{
for(int j=1; j+i<=n && j<=b; j++)
{
dp[i+j][1] += dp[i][2];
dp[i+j][1]%=INF;
}
for(int j=1; j+i <= n && j <= a; j++)
{
dp[i+j][2]+=dp[i][1];
dp[i+j][2]%=INF;
}
}
cout<<((dp
[1]+dp
[2])%INF)<<endl;
}
return 0;
}
The producer of the group said that the album should consist of
n remixes. On second thoughts the musicians decided that the album will be of interest only if there are no more than
a remixes on “My love” in a row and no more than b remixes on “I miss you” in a row. Otherwise, there is a risk that even the most devoted fans won’t listen to the disk up to the end.
How many different variants to record the album of interest from
n remixes exist? A variant is a sequence of integers 1 and 2, where ones denote remixes on “My love” and twos denote remixes on “I miss you”. Two variants are considered different if for some
i in one variant at i-th place stands one and in another variant at the same place stands two.
Input
The only line contains integers n, a,
b (1 ≤ a, b ≤ 300; max( a, b) + 1 ≤
n ≤ 50 000).
Output
Output the number of different record variants modulo 10
9+7.
Example
input | output |
---|---|
3 2 1 | 4 |
Notes
In the example there are the following record variants: 112, 121, 211, 212.#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=50000+5;
const int INF=1e9+7;
int dp[maxn][5];
int main()
{
int n,a,b;
while(cin>>n>>a>>b)
{
memset(dp,0,sizeof(dp));
dp[0][1]=1;
dp[0][2]=1;
for(int i=0;i<=n;i++)
{
for(int j=1; j+i<=n && j<=b; j++)
{
dp[i+j][1] += dp[i][2];
dp[i+j][1]%=INF;
}
for(int j=1; j+i <= n && j <= a; j++)
{
dp[i+j][2]+=dp[i][1];
dp[i+j][2]%=INF;
}
}
cout<<((dp
[1]+dp
[2])%INF)<<endl;
}
return 0;
}
相关文章推荐
- URAL_2018_The Debut Album(滚动数组DP)
- URAL 2018. The Debut Album (dp)
- 【DP】URAL 2018 The Debut Album
- URAL 2018 The Debut Album (DP)
- URAL - 2018 The Debut Album dp
- ural 2018 The Debut Album (dp)
- URAL 2018 The Debut Album(dp)
- ☆URAL 2018 The Debut Album (dp 两种写法)
- URAL 2018 The Debut Album(DP)
- URAL - 2018 The Debut Album(状态dp 记忆化搜索)
- URAL - 2018 The Debut Album
- Ural 2018 The Debut Album
- Ural 2018 The Debut Album
- Ural 2018. The Debut Album
- 2018. The Debut Album
- codeforces (G) The Debut Album dp+滚动数组
- URAL 2072 Kirill the Gardener 3 (单调DP)
- HDU 1693 Eat the Trees(插头DP、棋盘哈密顿回路数)+ URAL 1519 Formula 1(插头DP、棋盘哈密顿单回路数)
- ural 2072 - Kirill the Gardener 3 - dp
- ural 2072 - Kirill the Gardener 3 详细题解 (思维+dp)