链接:

http://poj.org/problem?id=3252

题意:

给你一个区间l,r,求区间中有多少个数转化为二进制后1的个数大于等于0的个数

题解:

还是数位dp,不过多了前导0的判断

代码:

31 int a[40];
32 int dp[40][80];
33
34 int dfs(int pos, int sta, bool lead, bool limit) {
35     if (pos == -1) return sta >= 40;
36     if (!lead && !limit && dp[pos][sta] != -1) return dp[pos][sta];
37     int up = limit ? a[pos] : 1;
38     int res = 0;
39     rep(i, 0, up + 1) {
40         if (lead && i == 0) res += dfs(pos - 1, sta, true, limit && i == a[pos]);
41         else res += dfs(pos - 1, sta + (i == 0 ? 1 : -1), false, limit && i == a[pos]);
42     }
43     if (!lead && !limit) dp[pos][sta] = res;
44     return res;
45 }
46
47 int solve(int x) {
48     int pos = 0;
49     while (x) {
50         a[pos++] = x & 1;
51         x >>= 1;
52     }
53     return dfs(pos - 1, 40, true, true);
54 }
55
56 int main() {
57     int l, r;
58     cin >> l >> r;
59     memset(dp, -1, sizeof(dp));
60     cout << solve(r) - solve(l - 1) << endl;
61     return 0;
62 }

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

POJ 3252 数位DP相关推荐

  1. POJ - 3252 Round Numbers(数位dp)

    题目链接:点击查看 题目大意:规定一个数如果二进制中0的个数大于等于1的个数,则这个数称为"整数",问闭区间a,b中有多少个整数 题目分析:数位dp,dp[pos][c0][c1] ...

  2. Round Numbers POJ - 3252(数位dp+判断前导零)

    题意 求二进制表示中0的个数大于1的数的个数. 题目 The cows, as you know, have no fingers or thumbs and thus are unable to p ...

  3. POJ - 3252二进制数位DP

    给一个区间,让你求出区间内有多少个round numbers,所谓的round numbers就是二进制表示下,0的数量比1的数量多的数. 二进制数位DP,需要注意的地方: 1.前导0不算二进制表示下 ...

  4. poj 3208 Apocalypse Someday 数位dp+二分答案

    Apocalypse Someday Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 2203   Accepted: 11 ...

  5. poj 3208 Apocalypse Someday(数位dp)

    题意:给定n,输出第n大包含666的数字. 分析:数位dp,详见<算法竞赛进阶指南>P342-344. 代码: #include<iostream> #include<c ...

  6. 数位DP———POJ 3208 启示录

    POJ3208 启示录 题目传送门 题目大意:我们称只要某数字的十进制表示中有三个连续的6,我们就称它为"魔鬼数",比如:666,1666,6663,16666 等.现给出一个数X ...

  7. Poj 3208 Apocalypse Someday(数位dp + 二分)

    题目大意:   有三个连续的6在一起的数就是beast数,前几个beast数是:666,1666,2666,-   T组数据,每组询问排名为n的beast的数是什么? 解题思路 第一眼看到懵逼了,不是 ...

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

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

  9. [POJ3252]Round Number(数位dp)

    题目链接:http://poj.org/problem?id=3252 题意:求范围内数字二进制下0的个数大于等于1的个数的数的个数. 数位dp,dp(l,zero,one,fz)记录当前第l位时0的 ...

最新文章

  1. 通配符?子字符串匹配主字符串次数_突破LeetCode,拿BAT大厂offer之《正则表达式匹配》(动态规划)...
  2. Java中常用的类及其特点
  3. 【Spark篇】---Spark解决数据倾斜问题
  4. ASPJPEG图片处理组件安装和使用问题
  5. C语言中do...while(0)用法小结
  6. 2.19 总结-深度学习-Stanford吴恩达教授
  7. 磁共振线圈分类_磁共振硬件(二)主磁体分类
  8. 三种excel 多条件计数方法
  9. SAP Spartacus pageSlot一览
  10. 华为API战略:规范、组织和流程驱动企业大循环
  11. 加密工具类 EncryptionUtils.java
  12. 天涯明月刀登录的界面服务器显示,上述便是Win10系统下登录天涯明月刀提示异地登录不了的详细解决方法了...
  13. Java + OpenCV 实现图片人脸检测
  14. python连接服务器执行命令进行部署
  15. globk命令帮助信息
  16. 手把手教你在Linux系统进行项目部署
  17. 栈——栈的基本概念和基本操作
  18. python无法初始化设备_无法初始化图形设备什么意思
  19. 来淄博旅游 结构体
  20. 基于8086单片机的PWM调光(带汇编)

热门文章

  1. python3moduleoftheweek中文_[翻译]Python Module of The Week: Counter
  2. 为什么开源的代码没有注释_代码注释那些事儿
  3. 二叉树的层序遍历 IIPython解法
  4. shell如何控制文件读写不同时_如何定时备份Mysql数据库数据?
  5. mysql 实时血备份_windows下设置自动备份 mysql 批处理
  6. php怎么写官网,PHP - Manual: 简介 (官方文档)
  7. java mvc增删改查_springmvc-CRUC增删改查
  8. jsonarray转liast_jsonArray转换成List
  9. mysql php 迁移_MySQL数据复制、迁移、转换
  10. 读空气java_空气质量指数查询示例代码