显然数位DP。

dp[i][j]表示所有末尾为j的i位二进制数相邻位的数量和

初始状态dp[2][1]=1

从长度i-1转移到长度i就是在i-1位的末尾添上0或1,转移方程就是:

dp[i][0]=dp[i-1][0]+dp[i-1][1]

dp[i][1]=dp[i-1][0]+dp[i-1][1]+2i-2

预处理完后,就可以通过这个计算出[0,n]区间的数量和,还是感觉数位DP的这一步挺棘手的,具体问题具体分析吧。。

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 long long d[32][2];
 5 int main(){
 6     d[2][1]=1;
 7     for(int i=3; i<32; ++i){
 8         d[i][0]=d[i-1][0]+d[i-1][1];
 9         d[i][1]=d[i-1][0]+d[i-1][1]+(1<<i-2);
10     }
11     int t;
12     long long n;
13     scanf("%d",&t);
14     for(int cse=1; cse<=t; ++cse){
15         scanf("%lld",&n);
16         long long res=0;
17         for(int i=30; i>=0; --i){
18             if((n>>i)&1) res+=d[i][0]+d[i][1];
19             if(((n>>i)&1) && ((n>>i+1)&1)) res+=(n&((1LL<<i+2)-1))-((1<<i)|(1<<i+1))+1;
20         }
21         printf("Case %d: %lld\n",cse,res);
22     }
23     return 0;
24 }

转载于:https://www.cnblogs.com/WABoss/p/5127652.html

LightOJ1032 Fast Bit Calculations(数位DP)相关推荐

  1. 动态规划 —— 数位 DP

    [概述] 数位 DP 实际是一种计数用的 DP,一般就是统计一个区间 [le,ri] 内满足一些条件数的个数. 所求的限定条件往往与数的位数有关,例如:数位之和.指定数码个数.数的大小顺序分组等. 题 ...

  2. ACwing 311. 月之谜 数位dp

    题意:问你[l,r]内有多少数,是可以被其数位和整除的. 思路: 思路:直观想法,用dp[pos][sum1][sum2]dp[pos][sum1][sum2]dp[pos][sum1][sum2], ...

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

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

  4. 不要62 ---数位DP

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

  5. bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/ ...

  6. cojs 简单的数位DP 题解报告

    首先这道题真的是个数位DP 我们考虑所有的限制: 首先第六个限制和第二个限制是重复的,保留第二个限制即可 第五个限制在转移中可以判断,不用放在状态里 对于第一个限制,我们可以增加一维表示余数即可 对于 ...

  7. 数位DP 不断学习中。。。。

    1, HDU 2089  不要62 :http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:不能出现4,或者相邻的62, dp[i][0],表示不存在不吉 ...

  8. [数位dp] spoj 10738 Ra-One Numbers

    题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...

  9. 数位dp(求1-n中数字1出现的个数)

    题意:求1-n的n个数字中1出现的个数. 解法:数位dp,dp[pre][now][equa] 记录着第pre位为now,equa表示前边是否有降数字(即后边可不能够任意取,true为没降,true为 ...

最新文章

  1. Diango博客--24.单元测试:测试评论应用
  2. 2018中国国际大数据大会专属报名通道(免费)开通啦!
  3. django 路由分发 url分层
  4. 【QT】QT从零入门教程(十六):QSS样式表
  5. 雷军:小米推动山寨机灭亡;苹果回应禁止第三方换电池;Javascript 引擎 V8 7.7 发布 | 极客头条...
  6. Anaconda 安装步骤
  7. 计算机联锁怎么排进路,计算机联锁进路选排设计
  8. 搭建超级实用的免费机器翻译api
  9. 【微信小程序】微信小程序生成二维码报错errcode=41030,invalid page rid
  10. 在单端输入应用中连接差分放大器
  11. 做好PMC管理三大工作,轻松搞定生产计划与物料控制
  12. 日期横线转为斜线oracle,excel 函数 日期横线格式自动变成斜线 | excle日期显示横线...
  13. html 网页背景图片根据屏幕大小CSS自动缩放
  14. mips汇编之利用syscall输出结果
  15. this指向,并改变this指向
  16. 开发一个 Chrome 浏览器插件,拢共分几步?
  17. 谐振电路及品质因数(三)
  18. 算法工程师-机器学习-数据科学家面试准备[外企和国外公司、春招、秋招]
  19. 解决uniapp退出全屏视频字体变大的bug
  20. 戒烟产品如何引流?戒烟产品如何寻找客户?戒烟类产品推广方案

热门文章

  1. 我是发起人Sumtec
  2. Proj.4 升级新版本5.x和6.x
  3. 算法 排序 python 实现--快速排序
  4. asp.net 中Gridview 使用总结
  5. 创业故事:腾讯的创始人们
  6. nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
  7. python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理
  8. POJ2536 二分图匹配
  9. 【数字信号处理】相关函数应用 ( 相关函数应用场景 | 噪声中信号检测 | 隐含周期性检测 | 时差估计 | 描述随机信号 )
  10. 【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )