数位dp( tzoj6061:Bomb-求49个数;tzoj1427: 不要62)
6061:http://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=6061
dfs记忆化搜索

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll digit[20];
ll dp[20][2];
ll dfs(int len,bool if4,bool limit)//当前数是否是4 是否达到上界
{
if(len==0)return 1;//搜索到最低位 最低位一定满足条件 返回1
if(!limit&&dp[len][if4])return dp[len][if4];//未到达上界 并且这个状态已经有答案
ll cnt=0,up_bound=(limit?digit[len]:9); //是不是上界//n=512-> up=5
for(ll i=0;i<=up_bound;i++){
if(if4&&i==9)continue;//剪掉49这一支
cnt+=dfs(len-1,i==4,limit&&i==up_bound); //加上剩余满足条件的
}
if(!limit)dp[len][if4]=cnt; //不是上界;记录答案; 是上界的话答案就不能利用之前的了 要另外算
return cnt;
}
ll solve (ll num)
{
ll k=0;//记录几个数位
while(num){
digit[++k]=num%10;
num/=10;
} return dfs(k,false,true);
}
int main()
{
ll t;
ll n;
cin>>t;
while(t--){
cin>>n;
cout<<n-solve(n)+1<<endl;//总的减去 不包含49的(其中包括了0 所以多减了一个,要加回去)
}
return 0;
}
1427:http://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=1427
和上一题一样;就是49改成62;再加一个4的条件即可

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll digit[20];
ll dp[20][2];
ll dfs(int len,bool if6,bool limit)
{
if(len==0)return 1;
if(!limit&&dp[len][if6])return dp[len][if6];
ll cnt=0,up_bound=(limit?digit[len]:9);
for(ll i=0;i<=up_bound;i++){
if(if6&&i==2)continue;
if(i==4)continue;
cnt+=dfs(len-1,i==6,limit&&i==up_bound);
}
if(!limit)dp[len][if6]=cnt;
return cnt;
}
ll solve (ll num)
{
ll k=0;//记录几个数位
while(num){
digit[++k]=num%10;
num/=10;
} return dfs(k,false,true);
}
int main()
{
ll n,m;
while(scanf("%I64d%I64d",&n,&m),n!=0||m!=0){
printf("%I64d\n",solve(m)-solve(n-1));
}
return 0;
}
数位dp( tzoj6061:Bomb-求49个数;tzoj1427: 不要62)的更多相关文章
- [暑假集训--数位dp]hdu3555 Bomb
The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the ti ...
- (数位dp)Bomb (hdu 3555)
http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...
- 递推、数位DP解析(以HDU 2089 和 HDU 3555 为例)
HDU 2089 不要62 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人 ...
- 数位dp浅谈(hdu3555)
数位dp简介: 数位dp常用于求区间内某些特殊(常关于数字各个数位上的值)数字(比如要求数字含62,49): 常用解法: 数位dp常用记忆化搜索或递推来实现: 由于记忆化搜索比较好写再加上博主比较蒟, ...
- bzoj3209 花神的数论题——数位dp
题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积. 要对1000 ...
- beautiful number 数位DP codeforces 55D
题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...
- LightOJ 1140: How Many Zeroes? (数位DP)
当前数位DP还不理解的点: 1:出口用i==0的方式 2:如何省略状态d(就是枚举下一个数的那个状态.当然枚举还是要的,怎么把空间省了) 总结: 1:此类DP,考虑转移的时候,应当同时考虑查询时候的情 ...
- CodeForces 55D Beautiful numbers(数位dp+数学)
题目链接:http://codeforces.com/problemset/problem/55/D 题意:一个美丽数就是可以被它的每一位的数字整除的数. 给定一个区间,求美丽数的个数. 显然这是一道 ...
- hdu 5106 Bits Problem(数位dp)
题目链接:hdu 5106 Bits Problem 题目大意:给定n和r,要求算出[0,r)之间全部n-onebit数的和. 解题思路:数位dp,一个ct表示个数,dp表示和,然后就剩下普通的数位d ...
- hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
#define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully reading the entire ...
随机推荐
- 软工综合实践课设——员工招聘系统(参考BOSS直聘);Pyhton实现
应用背景: 随着科学技术的发展,岗位数量越来越多,特别是每逢毕业季找工作的人数也很多,如果人们找工作或者企业招人靠纯手工的话,费时费力,仅仅是筛选简历和费劲,并且员工找工作投简历可能得需要克服时间和空 ...
- HTTP协议拓展
本文详细介绍了 HTTPS 相较于 HTTP 更安全的原因,包括对称加密.非对称加密.完整性摘要.数字证书以及 SSL/TLS 握手等内容,图文并茂.理论与实战结合.建议收藏! 1. 不安全的 HTT ...
- unity 实现自定义class深度拷贝 deep copy 深度复制 引用类型复制
气死我了,搜半天没有,全让序列化再反序列化,又不方便又不美观.结果自己试着一写就通,两行完事. 首先先安装Newtonsoft.Json 包,这个很常用也很简单,随便搜一下安上就行,早晚得学. 然后两 ...
- 亲测有效! Scrutiny 网站SEO检测及优化工具 V12.6.1 for mac
亲测有效! Scrutiny 网站SEO检测及优化工具 V12.6.1 for mac Scrutiny是一款网站SEO工具,它能够自动检测目标网站的坏链.HTML验证.描述Description. ...
- 使用Kubernetes中的Nginx来改善第三方服务的可靠性和延迟
使用Kubernetes中的Nginx来改善第三方服务的可靠性和延迟 译自:How we improved third-party availability and latency with Ngin ...
- The Missing Semester - 第二讲 学习笔记
第二讲 Shell 工具和脚本 课程视频地址: https://www.bilibili.com/video/BV1Vv411v7FR 本机学习使用平台:虚拟机ubuntu18.04.6 主题一:Sh ...
- kali linux破解wifi密码-超详细过程
前期准备VMware Workstation虚拟机在虚拟机安装好kail linunx系统无线网卡(芯片为3070或者1887L都支持Linux)一.打开终端,用airmon-ng命令查看如果出现无法 ...
- 微信小程序组件封装传值以及问题点规避
封装组件 1.在components文件加下新建组件文件夹,在该文件夹下新建组件 2.在app.json中注册该组件 "usingComponents": { "page ...
- ORACLE数据库相关操作
表操作 -- 截断表 TRUNCATE TABLE TABLE_NAME; -- 删除表 DROP TABLE TABLE_NAME; -- 查询表 SELECT * FROM TABLE_NAME; ...
- Charles基本操作指南
安装: 百度"charles",闭着眼睛安装. charles依赖于java,还需要安装java,怎么安装java,见我的另一篇博客. 破解 注册码:Registered Name ...