HDU - 3555 Bomb 数位DP
2014-11-27 00:16
429 查看
题目大意:如果一个数中出现连续的49的话就表示***的能量+1,给你一个数,求从0到这个数的这个区间内,***的能量可以到达多少
解题思路:数位DP的模板题,判断的时候加个flag标志表示是否满足能量加1这个要求
解题思路:数位DP的模板题,判断的时候加个flag标志表示是否满足能量加1这个要求
#include<cstdio> #include<cstring> #define ll __int64 int data[30]; ll dp[30][12][3]; ll DP(int pos,int pre,int flag,int board) { if(pos == -1) return flag == 1; if(!board && dp[pos][pre][flag] != -1) return dp[pos][pre][flag]; ll ans = 0; int end = board ? data[pos]:9; for(int i = 0; i <= end; i++) { if(pre == 4 && i == 9) ans += DP(pos-1,i,1,board && (i == end)); else ans += DP(pos-1,i,flag,board && (i == end)); } if(!board) dp[pos][pre][flag] = ans; return ans; } ll solve(ll x) { int pos = 0; while(x) { data[pos++] = x % 10; x = x /10; } ll ans =DP(pos-1,-1,0,1); return ans; } int main() { int test; ll right; scanf("%d",&test); while(test--) { scanf("%I64d",&right); memset(dp,-1,sizeof(dp)); printf("%I64d\n",solve(right)); } return 0; }
相关文章推荐
- HDU 3555 Bomb (数位DP)
- hdu 3555 - Bomb [数位dp]
- hdu 3555 Bomb(数位DP)
- hdu 3555 Bomb(数位DP,4级)
- HDU 3555 Bomb(数位DP)
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- HDU 3555 Bomb (数位DP)
- hdu 3555 Bomb(数位dp)
- HDU 3555 Bomb 数位dp
- HDU 3555 Bomb 数位DP
- HDU --3555--Bomb--数位DP
- hdu 3555 Bomb 数位dp
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- 【数位DP】【HDU 3555】Bomb
- HDU-3555 Bomb 数位DP
- HDU 3555 Bomb 基础数位dp
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- HDU-3555 Bomb 数位DP
- hdu 3555 Bomb 数位DP
- hdu 3555 Bomb (数位DP)