HDU 3555 Bomb
2017-02-28 20:41
267 查看
判断子串是否存在的问题,传入一个have变量判断之前是否出现过。
#include<cstdio> #include<iostream> #include<cstring> #define ll long long using namespace std; const int maxn=50; ll f[200][15][15],d[200],a,b; int T; int calc_len(ll x) { int sum=0; while(x) { sum++;x/=10; } return sum; } void calc_d(ll x,int len) { memset(d,0,sizeof(d)); for(int i=1;i<=len;i++) { d[i]=x%10;x/=10; } } ll dfs(int len,int have,int s,int e) { if(len==0) return have; if(f[len][have][s]!=-1&&!e) return f[len][have][s]; ll ans=0; int u= e ? d[len] : 9; for(int i=0;i<=u;i++) { if(s&&i==9) { ans+=dfs(len-1,1,i==4,e&&i==u); } else ans+=dfs(len-1,have,i==4,e&&i==u); } return e ? ans : f[len][have][s]=ans; } ll solve(ll x) { int len=calc_len(x); calc_d(x,len); return dfs(len,0,0,1); } int main() { scanf("%d",&T); while(T--) { memset(f,-1,sizeof(f)); scanf("%lld",&a); printf("%lld\n",solve(a)); } return 0; }
相关文章推荐
- hdu 3555 Bomb(数位DP,4级)
- HDU 3555 Bomb(数位DP)
- HDU - 3555 Bomb 数位DP
- HDU 3555 Bomb
- 【数位DP】【HDU 3555】Bomb
- HDU 3555 Bomb ,HDU 2089 深刻学习数位dp (各种方法乱用)
- hdu 3555 Bomb【数位dp~吖!!!!!】
- hdu_3555_Bomb(数位DP)
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- hdu 3555 Bomb(数位DP,4级)
- hdu 3555 Bomb ( 数位DP)
- hdu 3555 Bomb
- HDU 3555 Bomb(数位DP)
- HDU-3555 Bomb (数位DP)
- hdu 3555 Bomb 数位dp
- [HDU 3555] Bomb
- 【HDU】3555 Bomb 数位DP
- hdu 3555 bomb 数位dp
- HDU 3555 Bomb题解(数位dp)
- hdu 3555 Bomb 数位DP