题目

求给定区间[x,y]中满足下列条件的整数个数,这个数恰好等于k个互不相等的B的整数次幂之和

Input

15 20 2 2

Out

17 18 20

示例:17=24+20 18=24+21 20=24+22

为什么15和16不行呢??? 因为15=23+22+21+20 此时K>2明显不成立 而16=23+23

此时B明显相等就无法通过 其实我们可以把它当成B进制的数来算(~~其实我也是听老师讲的~~)

在这里我们把它化成一棵树 然后转化成0,1的格式,去寻找它的一的数量是否符合所要求的数

Such As

(好丑,其实是闲着蛋疼画的【图不一定是对的只是为了看得明显一点......】)

这样就可以在树里寻找所满足条件的结果 为什么用0和1呢

Because Of

17=2^4+2^0

18=2^4+2^1

20=2^4+2^2

这个实际上就是B进制数

如下:

17=1*2^4+0*2^3+0*2^2+1*2^1+0*2^0

17=10001

同理18=10010 20=10100 15=1111 16=10000

所以说可以在树中找它的1的数量就可以找出答案

//对f进行预处理(变得多多的。。。)
void init(){
f[][]=;
for(int i=;i<=;i++){
f[i][]=f[i-][];
for(int j=;j<=i;j++)
f[i][j]=f[i-][j]+f[i-][j-];//状态转移方程
}
}

为了给它放进树里所做的努力!!!

然后去搜寻树中的1,一般情况下左子树的1要比右子树的一来得少

当满足条件时就可以记录下来

上面的例子中可以看出有两个1即可

此时就可以存储。。。

int cal(int x,int k){
int tot,ans;//tot当前路径还有的1的个数
for(int i=;i>;i--){
if(x&(<<i)){
tot++;
if(tot>k)break;
x=x^(<<i);
}
if(<<(i-)<=x){
ans+=f[i-][k-tot];
}
}
if((tot+x)==k) ans++;
return x;
}

答案的输出

cal(y,k)-cal(x-,k) 

这个答案的取值

嗯......

用上面做示范:

就是:

[1,20]--[1,14]=[15,20]

基本没错啦

(这个[x,y]是区间的意思)

这样可以找到答案

(如果有错敬请各位大佬指出)

跪地求RP

某关于数位DP的一节课后的感受的更多相关文章

  1. 数位dp 的简单入门

    时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...

  2. 【洛谷】4317:花神的数论题【数位DP】

    P4317 花神的数论题 题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 题目描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我 ...

  3. bzoj 3209 bzoj1799 数位dp

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2267  Solved: 1040[Submit][Status][Disc ...

  4. 【BZOJ3209】花神的数论题 数位DP

    [BZOJ3209]花神的数论题 Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级 ...

  5. 【数位dp】bzoj3209: 花神的数论题

    Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...

  6. BZOJ 3209: 花神的数论题【数位dp】

    Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...

  7. [Bzoj3209]花神的数论题(数位dp)

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2633  Solved: 1182[Submit][Status][Disc ...

  8. BZOJ_3209_花神的数论题_组合数+数位DP

    BZOJ_3209_花神的数论题_组合数+数位DP Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 描述 话说花神这天又 ...

  9. [bzoj3209][花神的数论题] (数位dp+费马小定理)

    Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...

随机推荐

  1. 四则运算web最终版

    经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...

  2. 第 4 章 用 HTML5 建立超链接

    HTML 文件中最重要的应用之一就是超链接.—— 当鼠标单击一些文字.图片或其他网页元素时,浏览器会根据其指示载入一个新的页面或跳转到页面的其他位置. 超链接除了可链接文本外,也可链接各种媒体,如声音 ...

  3. [转载]Python正则表达式匹配反斜杠'\'问题

    转载自csdnblog:Python正则表达式匹配反斜杠'\'问题 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)? 一.引入 在学习了Python特殊字符和 ...

  4. Python日志、序列化、正则模块

    使用Python内置模块的目的:拿来别人已经写好的模块功能,直接import内置模块使用,简化程序,避免重复造轮子的过程,提示自己的开发效率: 一. loging日志模块: 1. loging模块可以 ...

  5. GsonFormat根据返回值json快速构建Model

    Json是一个插件,我们只需要在Android studio中进行安装一下,即可使用. 根据平时的操作,根据浏览器中返回中的数据一行一行敲,其实这样非常麻烦. 有一个简单的方法,可以瞬间生成一个实体类 ...

  6. Vmware tools install

    Vmware tools 1◆ 下载 2◆ diagram   Ifcfg-eth0   =====>关闭防火墙 systemctl stop firewalld.service   ===== ...

  7. NSIS笔记

    1.IfFileExists IfFileExists D:\SA\test\testdirectory\*.* 0 +1 判断testdirectory是否是一个目录,若是,则执行接下来的第一行代码 ...

  8. Linux运维工程师必学必备的8项IT技能

    如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...

  9. 【资料收集】PCA降维

    重点整理: PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法 1.原始数据: 假定数据是二维的 x=[2.5, 0.5, 2.2, 1. ...

  10. Python3 线程/进程池 concurrent.futures

    python3之concurrent.futures一个多线程多进程的直接对接模块,python3.2有线程池了 Python标准库为我们提供了threading和multiprocessing模块编 ...