链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4734

题意:

题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,然后给出a,b求区间[0,b]内满足f(i)<=f(a)的i的个数。

题解:

dp[pos][sum]表示枚举到pos位,后面还需要凑sum的个数

代码:

31 int A, B;
32 int a[20];
33 int dp[20][MAXN];
34
35 int f(int x) {
36     if (x == 0) return 0;
37     int res = f(x / 10);
38     return res * 2 + (x % 10);
39 }
40
41 int dfs(int pos, int sum, bool limit) {
42     if (pos == -1) return sum <= A;
43     if (sum > A) return 0;
44     if (!limit && dp[pos][A - sum] != -1) return dp[pos][A - sum];
45     int up = limit ? a[pos] : 9;
46     int res = 0;
47     rep(i, 0, up + 1)
48         res += dfs(pos - 1, sum + i*(1 << pos), limit && i == a[pos]);
49     if (!limit) dp[pos][A - sum] = res;
50     return res;
51 }
52
53 int solve(int x) {
54     int pos = 0;
55     while (x) {
56         a[pos++] = x % 10;
57         x /= 10;
58     }
59     return dfs(pos - 1, 0, true);
60 }
61
62 int main() {
63     ios::sync_with_stdio(false), cin.tie(0);
64     int T;
65     cin >> T;
66     memset(dp, -1, sizeof(dp));
67     rep(cas, 1, T + 1) {
68         cin >> A >> B;
69         cout << "Case #" << cas << ": ";
70         A = f(A);
71         cout << solve(B) << endl;
72     }
73     return 0;
74 }

转载于:https://www.cnblogs.com/baocong/p/6805772.html

HDOJ 4734 数位DP相关推荐

  1. 找规律/数位DP HDOJ 4722 Good Numbers

    题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436. ...

  2. 数位dp总结 之 从入门到模板(stO)

    #转载自https://blog.csdn.net/wust_zzwh/article/details/52100392 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足 ...

  3. mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP

    题意:给定一个数n,问从1到n中,0~9这10个数字分别出现了多少次.比如366这个数,3出现了1次,6出现了2次. 题解:<剑指offer>P174:<编程之美>P132 都 ...

  4. 数位dp总结 之 从入门到模板

    转自巨佬:https://blog.csdn.net/wust_zzwh/article/details/52100392 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满 ...

  5. 解题报告 (十四) 数位DP

    文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...

  6. 数位dp的概念和模板

    基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位. ...

  7. 数位dp总结 之 从入门到模板

    基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位. ...

  8. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  9. 不要62 ---数位DP

    题意:求m到n中不含62和4的数的个数. 题目链接 思路:数位dp模板求满足的数字或不满足的数字,刚学,就求不满足的数. #include<stdio.h> #include<str ...

最新文章

  1. The method setClass(Context, Class?) in the type Intent is not applicable for the arguments (GameV
  2. Spring--IoC(2)
  3. javascript核心_javascript核心之DOM操作
  4. mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...
  5. 有些投资人从机构出来,自己单干做投资,募资一毛钱都没募到
  6. c语言的适当大小的子集,使用直接分析法编制C语言子集的词法分析程序..doc
  7. linux安装yum
  8. eclipse svn Subversive
  9. 三星手机性能测试软件,三星Galaxy S III性能速测:一个字“快”
  10. qmh(qtmediahub)插件研究
  11. clickhouse表引擎-合并树系列
  12. chi2inv函数 matlab_matlab函数与指令大全 a——h (转载)
  13. 有关林达华的几个地址
  14. C#经常用到的编程词汇
  15. Android 使用 ksoap2-android调用Web Service学习
  16. 【Linux】Shell脚本
  17. linux l7,GitHub - windslinux/l7detect: Network application protocol detection software
  18. 平安金融卫士 互联网理财“安全第一”
  19. 理论: LVM与磁盘配额管理
  20. oracle 表的碎片化整理

热门文章

  1. mysql 游标_跟我快速学数据存储:MySQL
  2. 请键入 net helpmsg 3534 以获得更多的帮助。_身边有人得了抑郁症,可以做点什么帮助Ta?| 心理小课...
  3. Ireport的安装及使用
  4. @Scheduled cron表达式
  5. MYSQL数据库中触发器禁用、启用、查询
  6. c#中dateTimePicker怎么获取当前的日期
  7. Centos系统查看版本
  8. 前端小秘密系列之闭包
  9. SVN版控系统的安装和使用
  10. Oracle 分页查询