Ural 2018The Debut Album(DP)
2017-04-30 20:52
260 查看
题目地址:Ural 2018
简单DP。用滚动数组。
代码例如以下:
简单DP。用滚动数组。
代码例如以下:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map> #include <set> #include <algorithm> using namespace std; #define LL __int64 const int INF=0x3f3f3f3f; const int mod=1e9+7; int dp[3][3][400]; int main() { int n, a, b, i, j; memset(dp,0,sizeof(dp)); scanf("%d%d%d",&n,&a,&b); if(n==1) printf("2\n"); else { dp[1][0][1]=1; dp[1][1][1]=1; for(i=2; i<=n; i++) { memset(dp[i&1],0,sizeof(dp[i&1])); for(j=1;j<=b;j++) { dp[i&1][0][1]+=dp[i+1&1][1][j]; if(dp[i&1][0][1]>=mod) dp[i&1][0][1]%=mod; if(j==1) continue ; dp[i&1][1][j]+=dp[i+1&1][1][j-1]; if(dp[i&1][1][j]>=mod) dp[i&1][1][j]%=mod; } for(j=1;j<=a;j++) { dp[i&1][1][1]+=dp[i+1&1][0][j]; if(dp[i&1][1][1]>=mod) dp[i&1][1][1]%=mod; if(j==1) continue ; dp[i&1][0][j]+=dp[i+1&1][0][j-1]; if(dp[i&1][0][j]>=mod) dp[i&1][0][j]%=mod; } } int ans=0; for(i=1;i<=a;i++) { ans+=dp[n&1][0][i]; if(ans>=mod) ans%=mod; } for(i=1;i<=b;i++) { ans+=dp[n&1][1][i]; if(ans>=mod) ans%=mod; } printf("%d\n",ans); } return 0; }
相关文章推荐
- URAL - 1012 DP+高精度
- URAL 1057 Amount of Degrees 数位DP
- Ural_1353. Milliard Vasya's Function(DP)
- URAL - 1519 Formula 1 (插头DP)
- 【满二叉树 && dp】URAL - 1117 Hierarchy
- 【DP】RQNOJ107[Ural的鹰蛋实验]题解
- Ural Amount of Degrees(数位dp)
- URAL 2018 The Debut Album (DP)
- URAL 1143 Electric Path (黑书例题,DP)
- URAL 2018 The Debut Album(DP)
- Ural 1635 Mnemonics and Palindromes(DP)
- URAL 1009 K-based numbers(DP递推)
- URAL 1039. Anniversary Party(树形DP)
- ural1057 Amount of Degrees 数位dp
- ural 1012. K-based Numbers. Version 2(大数dp)
- ural 1057 Amount of degrees (数位dp)
- DP_ural_Metro
- URAL 1326(状态压缩DP)
- ural 1353. Milliard Vasya's Function(dp)
- ural Kind Spirits 最短路径、dp