P4124 [CQOI2016]手机号码
链接:https://www.luogu.org/problemnew/show/P4124
题目描述
人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。
工具需要检测的号码特征有两个:号码中要出现至少 33 个相邻的相同数字;号码中不能同时出现 88 和 44 。号码必须同时包含两个特征才满足条件。满足条件的号码例如:13000988721、23333333333、14444101000。而不满足条件的号码例如:1015400080、10010012022。
手机号码一定是 11 位数,前不含前导的 00 。工具接收两个数 LL 和 RR ,自动统计出 [L,R][L,R] 区间内所有满足条件的号码数量。 LL 和 RR 也是 1111 位的手机号码。
输入输出格式
输入格式:
输入文件内容只有一行,为空格分隔的 22 个正整数 L,RL,R 。
输出格式:
输出文件内容只有一行,为 11 个整数,表示满足条件的手机号数量。
输入输出样例
12121284000 12121285550
5
说明
样例解释:满足条件的号码: 12121285000、 12121285111、 12121285222、 12121285333、 12121285550。
数据范围: 10^10≤L≤R<10^11 。
题解:数位dp, 还是挺容易yy出来的,但要去掉前导0的情况,<10^10是不合法的
// luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; #define ll long long #define rt register const int M = 2530; ll dp[20][10][2][2][2][2]; int digit[20], cnt, tot, bg[M];ll dfs(int dep, bool f, bool two, bool ok, int t, bool a4, bool a8){if(!dep) return (( !(a4 & a8) ) & ok);if(!f && dp[dep][t][two][ok][a4][a8] != -1) return dp[dep][t][two][ok][a4][a8];rt int i = f ? digit[dep] : 9;ll tmp = 0;for(; i >= 0; i--){if(dep==tot&&i==0) continue;bool ntwo, nok = ok;if(two && (t == i)) ntwo = 0, nok = 1;else if(i == t) ntwo = 1;else ntwo = 0;tmp += dfs(dep - 1, f & (i == digit[dep]), ntwo, nok, i, a4 | (i == 4), a8 | (i == 8));}if(!f)dp[dep][t][two][ok][a4][a8] = tmp;return tmp; }ll get(ll a){memset(dp, -1, sizeof(dp)); tot = 0; while(a){digit[++tot] = a%10;a /= 10;}if(tot<11) return 0;ll ans = dfs(tot, 1, 0, 0, 0, 0, 0);return ans; } ll read(){ll x = 0; ll f = 1; char c = getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c<='9'&&c>='0'){x=x*10+c-'0';c=getchar();}return x*f; }int main(){///freopen("1.in","r",stdin);//freopen("my.out","w",stdout);int T;memset(dp, -1, sizeof(dp));ll L = read(), R = read();ll ans2 = get(L - 1);ll ans1 = get(R);//cout<<ans1<<" "<<ans2;cout<<ans1-ans2<<endl; } //10000000000 10000012345
View Code
转载于:https://www.cnblogs.com/EdSheeran/p/9483273.html
P4124 [CQOI2016]手机号码相关推荐
- 【题解】P4124 [CQOI2016]手机号码
\(Desciption:\) 给出区间 \([L,R]\) ,求区间内满足没有 \(4\) 和 \(8\) 同事出现并且一定要有三位连续的相同. 并且一定是十一位的电话号码. \(Sample\) ...
- 洛谷P4124 [CQOI2016]手机号码
凭感觉,要计算区间 [ L , R ] [L,R] [L,R]这些而且数目很大的,对数字位数有限制的,我们会考虑数位dp的模型 考虑状态 d p ( c u r , t o p , p r e 1 , ...
- [CQOI2016]手机号码 数位DP
[CQOI2016]手机号码 用来数位DP入门,数位DP把当前是否需要限制取数范围(是否正在贴着临界值跑,即下面的limited)和一切需要满足的条件全部塞进记忆化搜索参数里面就好了,具体情况转移便好 ...
- 【洛谷P4124】[CQOI2016]手机号码
手机号码 数位DP模板题 记忆化搜索: #include<iostream> #include<cstring> #include<cstdio> using na ...
- [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...
- [BZOJ4521][Cqoi2016]手机号码 (数位dp)
题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...
- Bzoj4521 [Cqoi2016]手机号码
Time Limit: 10 Sec Memory Limit: 512 MB Submit: 557 Solved: 335 Description 人们选择手机号码时都希望号码好记.吉利.比如 ...
- BZOJ4521: [Cqoi2016]手机号码
Description 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单 ...
- [CQOI2016]手机号码
嘟嘟嘟 这题一看就是数位dp. 我写数位dp,一般是按数位dp的格式写一个爆搜,然后加一点记忆化. 不过其实我一直不是很清楚记忆化是怎么加,感觉就是把dfs里的参数都扔到dp数组里,好像很暴力啊. 这 ...
最新文章
- page_index--template.html(0)源码
- Memcache缓存系统原理
- linux 下opencv安装教程,linux 下 opencv安装
- 2018黄河奖设计大赛获奖_宣布我们的freeCodeCamp 2018杰出贡献者奖获奖者
- SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
- Kubernetes—常用命令总结(二)
- PyTorch 1.0 中文文档:torch.nn.functional
- KubeCon 2018 参会记录 —— FluentBit Deep Dive 1
- Android复习准备
- uniapp 小程序授权登录时 获取不到用户头像等信息 只能得到灰色缺省头像以及nickname 为“微信用户”等
- win8.1删除桌面的IE图标
- 无线测温传感器、无线测温装置在项目上的应用—安科瑞 孙斌
- 非对称算法之RSA的签名剖析
- linux下code-server离线远程web浏览器调试C++代码
- nodejs绿色版下载安装及配置淘宝镜像、安装vue脚手架
- 锐利特科技物联网云平台解决方案
- VASP学习笔记--简单的VASP运行实例:CrI3做非磁的优化
- Law of continuity
- ASP.Net免费发送短信
- python 图片文字识别orc
热门文章
- 三星s轻奢android+p,三星Galaxy S轻奢版5月21日将至:骁龙660处理器+安卓8.0
- 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?
- 计算机用户停用无法登录,电脑开机无法登录提示您的账户已被停用如何解决。 如何解决电脑开机无法登录提示您的账户已被停用的问题。...
- PHP的addslashes 函数详解
- docker客户端连接远程服务器
- Tensorflow【实战Google深度学习框架】使用 HDF5 处理大型数据集with TFLearn
- 【Network Security!】密码攻击的原理和方法
- 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY10-降维和度量学习
- 2 resize 到指定大小_阿里巴巴为什么让初始化集合时必须指定大小?
- java 奖xls转成csv_java - 在Java中将.csv转换为.xls - 堆栈内存溢出