洛谷 P4124 [CQOI2016] 手机号码 题解 数位dp

HL-008 访问控制列表与地址转换(v4.0-20031226) 理解访问控制列表的基本原理 掌握标准和扩展访问控制列表的配置方法 掌握地址转换的基本原理和配置方法 立即下载

[CQOI2016] 手机号码

题目描述

人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。

工具需要检测的号码特征有两个:号码中要出现至少 3 3 3 个相邻的相同数字;号码中不能同时出现 8 8 8 和 4 4 4。号码必须同时包含两个特征才满足条件。满足条件的号码例如:13000988721、23333333333、14444101000。而不满足条件的号码例如:1015400080、10010012022。

手机号码一定是 11 11 11 位数,且不含前导的 0 0 0。工具接收两个数 L L L 和 R R R,自动统计出 [ L , R ] [L,R] [L,R] 区间内所有满足条件的号码数量。 L L L 和 R R R 也是 11 11 11 位的手机号码。

输入格式

输入文件内容只有一行,为空格分隔的 2 2 2 个正整数 L , R L,R L,R。

输出格式

输出文件内容只有一行,为 1 1 1 个整数,表示满足条件的手机号数量。

样例 #1

样例输入 #1

12121284000 12121285550

样例输出 #1

5

提示

样例解释:满足条件的号码: 12121285000、 12121285111、 12121285222、 12121285333、 12121285550。

数据范围: 1 0 10 ≤ L ≤ R < 1 0 11 10^{10}\leq L\leq R<10^{11} 1010≤L≤R<1011。

原题

洛谷P4124——传送门

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll dp[16][16][16][2][2][2]; // dp记录[pos][last][llast][exist_4][exist_8][ok]状态下对答案的贡献
int a[16];                  // a[]记录数字串
// pos为此时的位置,last为上一位的数,llast为上上一位的数
// exist_4表示4是否存在,exist_8表示8是否存在,ok表示当前是否存在连续三位相同
// bound表示前面每一位是否都是上界,lead_0表示是否前面全是0
ll dfs(int pos, int last, int llast, int exist_4, int exist_8, int ok, bool bound, bool lead_0)
{
    if (exist_4 && exist_8) // 同时存在4和8直接返回0
        return 0;
    if (pos == 0) // 枚举完每一位时返回
        return ok;
    if (!bound && !lead_0 && dp[pos][last][llast][exist_4][exist_8][ok] != -1) // 读取记忆(doge
        return dp[pos][last][llast][exist_4][exist_8][ok];
    int max_num; // 可枚举的该位的数的上界
    if (bound)
        max_num = a[pos];
    else
        max_num = 9;
    ll res = 0;
    for (int i = 0; i <= max_num; i++)
    {
        if (lead_0 && i == 0)
            res += dfs(pos - 1, i, last, exist_4 || (i == 4), exist_8 || (i == 8), ok, bound && (i == a[pos]), 1);
        else
            res += dfs(pos - 1, i, last, exist_4 || (i == 4), exist_8 || (i == 8), ok || (last == llast && i == last), bound && (i == a[pos]), 0);
    }
    if (!bound && !lead_0) // 没在边界时,记录下该状态对应的答案,记忆化
        dp[pos][last][llast][exist_4][exist_8][ok] = res;
    return res;
}
ll solve(ll x)
{
    int len = 0;
    while (x)
    {
        a[++len] = x % 10;
        x /= 10;
    }
    return dfs(len, -1, -1, 0, 0, 0, 1, 1);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    memset(dp, -1, sizeof(dp)); // 将dp数组初始化为-1,表示对应状态的答案目前还未计算出
    ll l, r;
    cin >> l >> r;
    cout << solve(r) - solve(l - 1) << '\n';

    return 0;
}
SenseVoice 实测,阿里开源语音大模型,识别效果和效率优于 Whisper,居然还能检测掌声、笑声!5分钟带你部署体验 阿里开源语音大模型:语音识别效果和性能强于 Whisper,还能检测掌声、笑声、咳嗽等 阅读详情

相关推荐

RAGFlow + GraphRAG+ 知识图谱 + QwQ32B探索实践

RagFlow 是一款开源的 RAG(Retrieval-Augmented Generation)引擎,专注于深度文档理解,能够助力企业及个人构建高效的 RAG 工作流程。借助大语言模型(LLM),它可以精准处理各种复杂格式的数据,为用户提供可靠的问答服务,并附上详实的引用依据。

技术引领业务创新 8万+

bzoj4521 [Cqoi2016]手机号码(数位)

Description人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不 吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数 量。 工具需要检测的号码特征有两个:号码中要出现至少3个相邻的相同数字,号码中不能同 时出现8和4。号码必须同时

Coco_T的博客 721

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 648

P4124[CQOI]手机号码

P4124 [CQOI2016]手机号码 题目描述 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。 工具需要检测的号码特征有两个:号码中要出现至少 3 个相邻的相同数字;号码中不能同时出...

Zbr162的博客 397

OTP/EEPROM 读取与处理

Camera OTP/EEPROM 读取与处理 文章目录Camera OTP/EEPROM 读取与处理1. OTP概念1.1 基本概念1.2 OTP存储类型1.3 OTP烧录信息类型1.4 OTP 作用2. 配置准备2.1 基本认识2.2 OTP/EEPROM配置3. OTP/EEPROM datasheet理解 以及 读取方式3.1 data sheet 内容3.2 一般OTP/EEPROM(e...

Understand-image 1万+

告别手动查文献!用Claude Haiku 4.5一键帮你检索+插入参考文献,科研效率直接翻倍(附实操演示+AI提示词)

以下是我的论文段落内容与参考文献列表。以下是我论文段落内容【粘贴论文段落】,请根据每个段落的主题自动检索近五年内的高相关学术文献(以真实DOI或可查询来源为准),要求:1)为每个段落匹配2–3条最相关的文献;另一种是你没有现成的文献列表,需要AI能够帮你检索,筛选输出合适的参考文献列表,并将其正确插入至段落中。选择完成后,先让它检索文献,我设计了一段AI提示词,让Haiku 4.5模型围绕研究主题,给我在各大数据库搜索近五年的文献,并以表格的形式输出文献的核心信息,确保DOI号能直接跳转到原文。

qq_64378896的博客 407

洛谷4124

人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。 工具需要检测的号码特征有两个:号码中要出现至少 33 个相邻的相同数字;号码中不能同时出现 88 和 44。号码必须同时包含两个特征才满足条件。满足条件的号码例如:13000988721、23333333333、14444101000。而不满足条件的号码

bangdexuanyuan的博客 436

AI Agent 入门(一):什么是 AI Agent?——从概念到第一个 API 调用

AI Agent 入门(一):什么是 AI Agent?——从概念到第一个 API 调用

nbtang的博客 257

【数位dp】【CQOI2016】手机号码

【题目描述】 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。 工具需要检测的号码特征有两个:号码中要出现至少 3个相邻的相同数字;号码中不能同时出现 8 和 4。号码必须同时包含两个特征才满...

weixin_44111457的博客 326

【100%通过率】华为OD机试真题 Python【数字最低位排序】【最低位排序】

2023华为OD机试真题 Python【数字最低位排序】【最低位排序】 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

MISAYAONE的博客 1901

EB配置I2c - 实现与PF8200的读写操作

①,基于硬件实现IIC通信(硬件GPIO引脚配置为I2c复用引脚)②,基于软件模拟IO实现IIC通信(代码控制SDA和SCL两个IO引脚的电平来模拟IIC时序)本文章基于64pin的恩智浦S32K146型号的芯片作为主机,从机是NXP的供电芯片。在本次实验中,我们将以使用EB工具链来配置硬件IIC通信。1,EB配置2,代码编写3,测试验证话不多说,走你~写操作比较简单,只需要申明一个I2c配置结构体变量即可。

weixin_48498880的博客 3767

洛谷P4124 [CQOI2016]手机号码

然而以上状态并不能正确地通过测试,因为状态设计的并不正确,因为有重叠的部分.这些而且数目很大的,对数字位数有限制的,我们会考虑数位dp的模型。狗啊,这题目还包含输入是10个,数字的情况,所以我们要特判掉。,也就是说这种情况我们必须要选一个8,不然就会进入。,是否已经满足条件1出现了3次相邻相同数字。包含的状态是既不包含4与8的数字。既然这样,我们转换一下。个位置,是否贴着上界。

qq_36018057的博客 442

一文读懂 CST 时/频域求解器

本文系统介绍了CST Studio Suite中的关键网格技术——六面体网格、四面体网格以及TLM求解器专用的八叉树非均匀网格技术。重点阐述了六面体网格的三项核心技术:理想边界拟合(PBA)技术可精确处理曲面边界,薄片技术(TST)能高效模拟薄层结构,自适应八叉树网格实现计算资源最优分配。同时详细对比了六面体网格与四面体网格的特点及适用场景,前者适用于系统级EMC/EMI分析等时域问题,后者擅长处理复杂曲面和异质材料的频域问题。

一只豌豆象的博客 463

数位dp(洛谷 P4124 [CQOI2016]手机号码)

题目链接 普通数位dp,不过有几点值得深思。 首先,我们每个手机号的位数固定为11位,即,不满足11位的并不是手机号不满足条件。而且如果像普通数位dp那样求该数到0之间的数量的话,还要考虑前导0的印象。(多开一维数组存前导0)不太值得。所以,我们直接求该数到1e10之间的数: int mx = flag?su[cur]:9; int bon = (cur==len-1)?1:0; ...

平凡人Kalzn的博客 882

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

洛谷P4124 [CQOI2016] 手机号码 数位dp

给出两个长度为111111位数的手机号码,求问中间有多少满足包含了连续333位相同的数,但是不同时包含888和444的数量。 确定是111111位,所以不含有前导000,只要在处理第一位的时候不为000即可。然后直接数位dp。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf...

qq_40859782的博客 412

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[Luogu P4124] [CQOI2016]手机号码 (数位DP)

题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态。 所以说,考虑这样设置状态: 设\(f[i][j][k][2][2][2][2][2]\)表示当前填到第i位,上一位填了j,上两位填了k,是否卡上界,上一个数是否为前导零,是否有4,是否有8,是否...

weixin_30279751的博客 119

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

BZOJ4521 ||洛谷P4124 [CQOI2016]手机号码【数位DP】

Time Limit: 10 Sec Memory Limit: 512 MB Description 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不 吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数 量。 工具需要检测的号码特征有两个:号...

niiick 487

P4124 [CQOI2016]手机号码

链接:https://www.luogu.org/problemnew/show/P4124 题目描述 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。 工具需要检测的号码特征有两个:号...

weixin_30768661的博客 80

洛谷 P4124 [CQOI2016]手机号码

题意简述 求l~r之间不含前导零,至少有三个相邻的相同数字,不同时含有4和8的11位正整数的个数 题解思路 数位DP,注意在l,r位数不够时补至11位 代码 #include <cstdio> #include <cstring> typedef long long ll; int cnt; int num[20]; ll l, r; ll dp[20][2][1...

weixin_30580943的博客 199

[洛谷P4124][CQOI2016]手机号码

题目大意:给你两个$l,r$,求出$[l,r]$中符合要求的数,要求为至少有$3$个相邻的相同数字,且不可以同时出现$8$和$4$ 题解:数位$DP$ 卡点:无 C++ Code: #include <cstdio> #include <algorithm> long long l, r; int num[13], tot; long long f...

weixin_30293079的博客 111

nRF52可穿戴AI语音助手开发套件Proto V1实战解析

低功耗蓝牙与AI语音助手的结合,核心在于解决可穿戴设备长时间待机与实时语音交互的矛盾。nRF52系列凭借Cortex-M4F内核与毫安级蓝牙连接功耗,成为此类原型的理想主控,但受限于RAM与Flash,通常采用本地唤醒词检测加BLE传输音频至手机的架构。开发中需关注PDM/IIS音频接口配置、IIC外设调试、BLE连接参数与MTU协商,以及电源域管理。该方案适用于可穿戴硬件工程师验证语音交互场景,通过Proto V1快速跑通最小可行系统,为产品化决策提供依据。

weixin_33843947的博客 513

【洛谷P4124】[CQOI2016]手机号码

手机号码 数位DP模板题 记忆化搜索: #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define int long long int L,R,Maxx[15],dp[15][2][15][2][2][2]; int dfs(int l...

weixin_30432579的博客 173

[CQOI2016]手机号码

题目描述 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数量。 工具需要检测的号码特征有两个:号码中要出现至少 33 个相邻的相同数字;号码中不能同时出现 88 和 44。号码必须同时包含两个特征...

青烟绕指柔的博客 595

洛谷 P4124 (数位 DP)

### 洛谷 P4124 题目链接 ### 题目大意: 给你一段区间,让你求满足下列两个条件时的数的个数。 1、至少有 3 个相邻相同数字 (即 111 、1111 、222 等) 2、不能同时出现 8 与 4 。 给定的区段 [L,R] 中 ,L 与 R 的数值范围为:1010≤ L≤ R < 1011 分析: 1、用 q 与 w 标记 8 是否出现 ,4...

diefen9380的博客 230

BZOJ4521&&洛谷P4124 [CQOI2016]手机号码

搜索大法好 代码比较清楚就不细讲了,为了避免前导零,我们直接枚举第一位就行了 代码 //By AcerMo #include&lt;cmath&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; #define lli long long ...

AcerMoOi之路 551

【bzoj4521】【CQOI2016】【手机号码】【数位dp】

Description 人们选择手机号码时都希望号码好记、吉利。比如号码中含有几位相邻的相同数字、不含谐音不 吉利的数字等。手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号 码单独出售。为了便于前期规划,运营商希望开发一个工具来自动统计号段中满足特征的号码数 量。 工具需要检测的号码特征有两个:号码中要出现至少3个相邻的相同数字,号码中不能同 时出现8和4。号

sunshinezff的专栏 816
上一篇: Codeforces Manthan Codefest 17 E. Salazar Slytherin‘s Locket 题解 数位dp
下一篇: Trees on the level 题解 二叉树的层序遍历 二叉树的删除 二叉树的结点插入
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值