HDOJ 4734 数位DP
链接:
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相关推荐
- 找规律/数位DP HDOJ 4722 Good Numbers
题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436. ...
- 数位dp总结 之 从入门到模板(stO)
#转载自https://blog.csdn.net/wust_zzwh/article/details/52100392 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足 ...
- mysql dp.cal 显示汉子_计算1到N中各个数字出现的次数 --数位DP
题意:给定一个数n,问从1到n中,0~9这10个数字分别出现了多少次.比如366这个数,3出现了1次,6出现了2次. 题解:<剑指offer>P174:<编程之美>P132 都 ...
- 数位dp总结 之 从入门到模板
转自巨佬:https://blog.csdn.net/wust_zzwh/article/details/52100392 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满 ...
- 解题报告 (十四) 数位DP
文章目录 数位DP 解题报告 HDU 4722 Good Numbers HDU 2089 不要62 HDU 3555 Bomb HDU 3652 B-number PKU 3252 Round Nu ...
- 数位dp的概念和模板
基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位. ...
- 数位dp总结 之 从入门到模板
基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位. ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
- 不要62 ---数位DP
题意:求m到n中不含62和4的数的个数. 题目链接 思路:数位dp模板求满足的数字或不满足的数字,刚学,就求不满足的数. #include<stdio.h> #include<str ...
最新文章
- The method setClass(Context, Class?) in the type Intent is not applicable for the arguments (GameV
- Spring--IoC(2)
- javascript核心_javascript核心之DOM操作
- mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...
- 有些投资人从机构出来,自己单干做投资,募资一毛钱都没募到
- c语言的适当大小的子集,使用直接分析法编制C语言子集的词法分析程序..doc
- linux安装yum
- eclipse svn Subversive
- 三星手机性能测试软件,三星Galaxy S III性能速测:一个字“快”
- qmh(qtmediahub)插件研究
- clickhouse表引擎-合并树系列
- chi2inv函数 matlab_matlab函数与指令大全 a——h (转载)
- 有关林达华的几个地址
- C#经常用到的编程词汇
- Android 使用 ksoap2-android调用Web Service学习
- 【Linux】Shell脚本
- linux l7,GitHub - windslinux/l7detect: Network application protocol detection software
- 平安金融卫士 互联网理财“安全第一”
- 理论: LVM与磁盘配额管理
- oracle 表的碎片化整理