hdu 3555
2015-03-26 15:31
85 查看
我的第一个数位dp题
终于做了一发数位dp的题,有点模糊,是照着别人的题解敲的
终于做了一发数位dp的题,有点模糊,是照着别人的题解敲的
#include<bits/stdc++.h> using namespace std; long long bit[22]; long long dp[22][3]; void init() { memset(dp,0,sizeof(dp)); dp[0][2]=1; for(int i=1;i<20;i++) { dp[i][0]=dp[i-1][0]*10+dp[i-1][1];//表示第i位前含有49的个数 dp[i][1]=dp[i-1][2]; //表示第i位为9不含49的个数 dp[i][2]=dp[i-1][2]*10-dp[i-1][1];//表示不含有49的个数 } } int main() { int t; cin>>t; while(t--) { long long n; cin>>n; n++; int len=0; while(n) { bit[++len]=n%10; n/=10; } long long ans=0; init(); bit[len+1]=0; bool flag=0; for( int i=len;i;i--) { ans+=dp[i-1][0]*bit[i]; if(flag) ans+=dp[i-1][2]*bit[i]; if(!flag&&bit[i]>4) ans+=dp[i-1][1]; if(bit[i]==9&&bit[i+1]==4) flag=true; } cout<<ans<<endl; } return 0; }
相关文章推荐
- hdu 3555 bomb 数位dp
- HDU 3555 Bomb (数位DP)
- HDU:3555 Bomb
- HDU 3555 Bomb (数位DP)
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- HDU 3555 Bomb [数位]
- hdu 3555 数位dp
- hdu 3555(位dp)
- HDU 3555 Bomb
- HDU 3555 Bomb(1-n含有“49”的数字个数)
- HDU 3555 数位DP
- HDU 3555 浅谈数位动态规划逆向计数问题练习
- HDU 3555 Bomb (数位DP)
- HDU 3555 Bomb
- hdu 3709+hdu 3555(数位dp)
- HDU 3555 Bomb (数位DP)
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
- HDU 3555 Bomb
- HDU 3555 Bomb 简单数位DP
- HDU3555——Bomb(数位dp入门)