【hdu2089】不要62
惊奇地发现今天居然和dalao的题单重了不少23333333333333
这是我第一次做数位dp,感觉这个题目还是比较兹磁的
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int l,r,dp[20][15],a[20]; int dfs(int pos,int las,int fl,bool flag)//pos是当前位置,las是上次选的那个数,fl判断上次选的数是否为6,flag判断pos位上是否有枚举限制 {if(pos==0)//答案成立,返回1 return 1;if(!flag&&dp[pos][las]!=-1)//如果flag==1的时候也返回,那么像213的时候会使答案偏大 return dp[pos][las];int ding=(flag)?a[pos]:9;//判断这一位上是否有限制最大能枚举的数 int re=0;for(int i=0;i<=ding;i++){if(i==4||(las==6&&i==2))//不能出现4或者62 continue;re+=dfs(pos-1,i,i==6,flag&&i==a[pos]);}if(!flag)//如果flag==1说明这一位有限制,并不完全将第pos位上一次选的las的状态完全包含,所以不能赋值 dp[pos][las]=re;return re; } int solve(int x) {int pos=0;while(x>0)//先拆分成一位位的数字 a[++pos]=x%10,x/=10;return dfs(pos,-1,0,1);//flag初始设为0是因为数位长度+1位确实是0 } int main() {memset(dp,-1,sizeof(dp));//每次输入的只是不同的数据范围,但是不会影响dp数组的答案,所以只初始化一遍就好 while(~scanf("%d%d",&l,&r)){if(l==0&&r==0)break;printf("%d\n",solve(r)-solve(l-1));//l也被包含在答案区间一部分 } }
转载于:https://www.cnblogs.com/Loi-dfkdsmbd/articles/7732564.html
【hdu2089】不要62相关推荐
- HDU2089 不要62【数位DP+记忆化搜索】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- hdu2089 不要62 数位dp
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU2089——不要62 (数位DP)
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍 ...
- [hdu2089]不要62(数位dp)
题意:求a-b之间满足条件(不含4和62)的数的个数. 解题关键:数位dp入门题. 注意有无limit会出现冲突,所以limit==true的情况下需要直接进行暴力. dp[i][j]表示剩余长度为i ...
- ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》
罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...
- 51Nod-1284 2 3 5 7的倍数【数位DP+记忆化搜索】
1284 2 3 5 7的倍数 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数. 例如N = 10,只有1不是2 3 5 7的倍数. Input 输入1个数N(1 <= N &l ...
- 51Nod-1009 数字1的数量【数位DP+记忆化搜索】
1009 数字1的数量 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数. 例如:n = 12,包含了5个1.1,10,12共包含3个1,11包含2个1,总共5个1. ...
- 数位dp真·浅谈 By cellur925
预警:由于是从$Vergil$学长那里和$Mathison$大神那里学来的,所以清一色记忆化搜索!qwq 巨佬的数位dp讲解(未来的咕咕日报头条): https://www.luogu.org/blo ...
- 不要62(HDU-2089)
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来 ...
最新文章
- Java并发 -- JMM
- js实现审批流_JavaScript实现审核流程状态的动态显示进度条
- 国内能打自动驾驶出租车了!行驶平稳还免费,首个量产车型开放道路试运营...
- JWT-基于token的认证方式
- 给Win7光盘添加PE3.0
- php下拉列表 二级 联动,PHP+Ajax实现二级联动下拉菜单!
- our happy ending(状压dp)
- 微软Window硬件大会(WinHEC)
- 黄金分割法与单峰函数求极值
- SonyZ2国行版L50t使用谷歌play服务安装谷歌四件套
- linux kylin 终端字体,安装Nerd Fonts字体
- 网页制作基础及HTML的笔记,《网页设计与制作项目教程》:网页制作基础知识笔记一...
- redis持久化(persistent)
- windowsxp下载python下载视频_Python 实现视频下载
- Linux性能优化——如何测试网络延迟
- 2548. 大胖子走迷宫 (时间bfs)
- 006-Sencha Cmd概论
- 大端和小端的区别和判断
- 抖音最后一面,问我Java 是如何实现线程间通信的?
- 服务器虚拟打印机为什么经常打打不,打印机虚拟论文,关于制作PDF打印服务器相关参考文献资料-免费论文范文...
热门文章
- 正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()
- C#反射基础理解1(转)
- hdu 1176 馅饼
- 认识伪类元素:before和:after
- STL之函数对象和谓词
- Java各进制之间的转换
- 在一个数组中,如何确定所需元素在数组中的位置.
- 3 .6 .5 优化Ad-Hoc工作负载
- 简单使用ansible-playbook
- 【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】...