某关于数位DP的一节课后的感受
题目
求给定区间[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的一节课后的感受的更多相关文章
- 数位dp 的简单入门
时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...
- 【洛谷】4317:花神的数论题【数位DP】
P4317 花神的数论题 题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 题目描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我 ...
- bzoj 3209 bzoj1799 数位dp
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2267 Solved: 1040[Submit][Status][Disc ...
- 【BZOJ3209】花神的数论题 数位DP
[BZOJ3209]花神的数论题 Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级 ...
- 【数位dp】bzoj3209: 花神的数论题
Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...
- BZOJ 3209: 花神的数论题【数位dp】
Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...
- [Bzoj3209]花神的数论题(数位dp)
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2633 Solved: 1182[Submit][Status][Disc ...
- BZOJ_3209_花神的数论题_组合数+数位DP
BZOJ_3209_花神的数论题_组合数+数位DP Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 描述 话说花神这天又 ...
- [bzoj3209][花神的数论题] (数位dp+费马小定理)
Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. ...
随机推荐
- 关于react16.4——高阶组件(HOC)
高阶组件是react中用于重用组件逻辑的高级技术.可以说是一种模式.具体来说呢,高阶组件是一个函数,它接收一个组件并返回一个新的组件. 就像这样, const EnhancedComponent = ...
- react中直接调用子组件的方法(非props方式)
我们都知道在 react中,若要在父组件调用子组件的方法,通常我们会采用在父组件定义一个方法,作为props转给子组件,然后执行该方法,可以获取到子组件传回的参数以得到我们的目的. 显而易见,这个执行 ...
- 使用vue-router设置每个页面的title
进入 router 文件夹底下的index.js文件 首先引入: import Vue from 'vue' import Router from 'vue-router' 然后在路由里面配置每个路由 ...
- python使用MySQLdb模块连接MySQL
1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...
- Boost.PropertyTree读取ini文件(Linux环境)
昨天因为需要读取配置文件略略伤神.网上很多例子但是我用都会报错,很多人把Boost.PropertyTree的函数写很麻烦的包所以报错我也不知道什么问题,所以今天整理下. 头上附上官网链接:Boost ...
- Windows定位窗口对应的exe文件
一.说明 以下两种情况我们会想要定位窗口是由哪个exe文件,或者什么命令启用 第一种是:广告窗口,现在经常时不时冒出一个广告窗口,要么是完全看不出哪个程序启动,要么是虽然大概知道是哪个应用启动(比如w ...
- Python3+selenium+BaiduAI识别并下载花瓣网高颜值妹子图片
一.说明 1.1 背景说明 上周在“Python3使用百度人脸识别接口识别高颜值妹子图片”中自己说到在成功判断颜值后,下截图片并不是什么难点. 直观感觉上确实如此,你判断的这个url适不适合下载,适合 ...
- 使用Spring-data-jpa(2)(三十一)
创建实体 创建一个User实体,包含id(主键).name(姓名).age(年龄)属性,通过ORM框架其会被映射到数据库表中,由于配置了hibernate.hbm2ddl.auto,在应用启动的时候框 ...
- span 超出部分换行
span{ word-break: normal; width: auto; display: block; white-space: pre-wrap; word-wrap: break-word; ...
- python xlrd使用
python xlrd使用 1● xlrd安装 管理员模式 success 2● 引用 import xlrd