HDU 3555 Bomb(1-n含有“49”的数字个数)

原创 2016年08月29日 18:08:39

题目链接:
HDU 3555 Bomb
题意:
求1到中含有“49”序列的数字的个数。491,149都是含有“49”序列但是“419”不是的。
数据范围:
分析:
数位dp。差不多也是模版题了。
从高位到低位记录前一位数字,并且记录当前是否已出现“49”序列,最后判断下状态,记忆化搜索。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
typedef long long ll;

int T;
ll n;
int digit[20];
ll dp[20][10][2][2];

ll dfs(int pos, int pre, int state, int limit)
{
    if (pos == -1) return state;
    if (dp[pos][pre][state][limit] != -1) return dp[pos][pre][state][limit];
    int last = limit ? digit[pos] : 9; // 是否已达数值上界
    ll ret = 0;
    for (int i = 0; i <= last; ++i) {
        ret += dfs(pos - 1, i, state || (i == 9 && pre == 4), limit && i == last);
    }
    dp[pos][pre][state][limit] = ret;
    return ret;
}

ll solve()
{
    int len = 0;
    memset(dp, -1, sizeof (dp));
    memset(digit, 0, sizeof (digit));
    while (n) {
        digit[len++] = n % 10;
        n /= 10;
    }
    return dfs(len - 1, 0, 0, 1);
}

int main()
{
    scanf("%d", &T);
    while (T--) {
        scanf("%lld", &n);
        printf("%lld\n", solve());
    }
    return 0;
}
版权声明:缥缈玉京人,想语然、京兆眉妩。

相关文章推荐

[ACM] hdu 3555 Bomb (数位DP,统计1-N中含有“49”的总数)

Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total S...

hdu3555 Bomb(要49)

Problem Description The counter-terrorists found a time bomb in the dust. But this time the terroris...

算法习题49:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)

如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1) ------------------------------------------ 熟悉排序算法的人知道,目前比较好的排序算法就...
  • ylf13
  • ylf13
  • 2013-11-07 13:07
  • 1689

HDU 3555 Bomb 数位DP

一:题意  给定一个N,要求你求出[0,N]内所有含有49的数字个数,其中N (1 二:解析  1,对于这一类数位dp,需要扫描[0,N]区间所有数的每一位,为了避免对每一个数取出每位数。...

HDU 3555 Bomb

水数位dp!

hdu 3555 Bomb 经典数位DP

传送门:Bomb题目大意给定一个整数N,求1~N中连续49的个数解题思路dp[i][0]表示长度为i位,不包含49的个数 dp[i][1]表示长度为i位,第一位是9的个数 dp[i][2]表示长度...

hdu 3555 Bomb 2010 ACM-ICPC Multi-University Training Contest 12

为了让智硬的自己以后还能看懂,尽量写详细点> 数位DP是按位考虑zhuangtai

hdu3555 Bomb数位dp裸题

Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Su...

HDU 3555 Bomb

第一次数位DP,用二维DP和记忆化搜索分别解决

hdu3555---Bomb(数位dp,水)

Problem Description The counter-terrorists found a time bomb in the dust. But this time the terrori...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)