BZOJ-1833 count 数字计数 ( 数位dp )

[C++]洛谷:数字计数 数位dp算法详解 数字计数:数位dp算法详解,简单易懂! 阅读详情

题目:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

思路:数位dp,sum表示digit出现的次数,num表示有多少个数。前导0需要注意下。

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int wei[15],k;
ll a,b,ans[15],p[15];
struct node{
    ll sum,num;
};
node dp[15];

node dfs(int pos,int limit,int lead)
{
    if(pos<1)
    {
        node fuck;
        fuck.num=1;
        fuck.sum=0;
        return fuck;
    }
    if(!limit&&!lead&&dp[pos].sum!=-1)
        return dp[pos];
    int up=limit?wei[pos]:9;
    node ans,tmp;
    ans.sum=ans.num=0;
    for(int i=0;i<=up;i++)
    {
        if(i==k)
        {
            if(lead&&k==0)
            {
                tmp=dfs(pos-1,limit&&i==up,lead&&i==0);
                ans.sum+=tmp.sum;
                ans.num+=tmp.num;
                continue;
            }
            if(limit&&i==up)
            {
                tmp=dfs(pos-1,limit&&i==up,lead&&i==0);
                ans.sum+=tmp.sum+tmp.num;
                ans.num+=tmp.num;
                continue;
            }
            tmp=dfs(pos-1,limit&&i==up,lead&&i==0);
            ans.sum+=tmp.sum+tmp.num;
            ans.num+=tmp.num;
            continue;
        }
        tmp=dfs(pos-1,limit&&i==up,lead&&i==0);
        ans.num+=tmp.num;
        ans.sum+=tmp.sum;
    }
    if(!limit&&!lead)
        dp[pos]=ans;
    return ans;
}

ll solve(ll x)
{
    memset(dp,-1,sizeof dp);
    int len=0;
    while(x)
    {
        wei[++len]=x%10;
        x/=10;
    }
    node ans=dfs(len,1,1);
    return ans.sum;
}
int main()
{
    p[0]=1;
    for(int i=1;i<=13;i++)
        p[i]=p[i-1]*10;
    scanf("%lld%lld",&a,&b);
    for(k=0;k<=9;k++)
        ans[k]=solve(b)-solve(a-1);
    for(int i=0;i<9;i++)
        printf("%lld ",ans[i]);
    printf("%lld\n",ans[9]);
    return 0;
}

 

RK3588适配Ubuntu系统 RKsdk上支持buildroot以及Debian系统,但是Ubuntu需要自己移植,有很多公司都移植好了可以直接用,这里就总结记录一下我制作Ubuntu的过程。 阅读详情

相关推荐

NVIDIA驱动版本太低?手把手教你解决CUDA与PyTorch版本冲突问题

本文针对深度学习开发中常见的NVIDIA驱动版本过低导致的CUDA与PyTorch版本冲突问题,提供了从根源理解到实战解决的完整指南。文章详细解析了驱动、CUDA与PyTorch的依赖关系,并给出了升级驱动、降级PyTorch、使用Conda环境管理及Docker容器化四种核心解决方案,帮助开发者快速诊断并构建稳定的GPU开发工作流。

grpc6streamer的博客 970

[多次数位dp]数字计数 洛谷P2602

题目描述 给定两个正整数a和b,求在 [a,b]中的所有整数中,每个数码(digit)各出现了多少次。 输入格式 仅包含一行两个整数a,b,含义如上所述。 输出格式 包含一行十个整数,分别表示 0∼9在 [a,b]中出现了多少次。 输入输出样例 输入 #1 1 99 输出 #1 9 20 20 20 20 20 20 20 20 20 说明/提示 数据规模与约定 对于 30%的数据,保证 a≤b≤10^6; 对于 100%的数据,保证 1≤a≤b≤10^...

Cloth的博客 878

手把手教你用海康威视相机+DLP4500搭建双目结构光系统(附避坑指南)

本文详细介绍了如何使用海康威视相机和DLP4500搭建双目结构光三维测量系统,涵盖硬件选型、系统搭建、双目标定及三维重建等关键步骤。特别针对预算有限的开发者和实验室团队,提供实用的避坑指南和优化技巧,帮助实现0.02mm的高精度测量。

weixin_42526087的博客 462

数位dp题集 Python

数位 dp 是个让人头疼的问题,特别是对于前导零的处理方法,还是得多多练习。

荷碧TongZJ 的水文 1397

企业AI Agent的审计与合规

本文将带你从**“0基础理解企业AI Agent审计与合规”到核心概念梳理:用大白话+学术定义拆解什么是“企业AI Agent”、“可审计性(Auditability)”、“可解释性(Explainability,XAI)≠可审计性”、“合规性(Compliance)”、“黑盒拆解的三层维度”等硬核但必须掌握的概念;风险与合规背景:从**内部风险(数据泄露、误操作、模型偏差)和。

Java大师兄的博客 301

电路设计学习一:DAC/ADC原理

文章目录参考文献DAC基本原理DAC分类倒T型电阻网络权电流转换器DAC的性能指标分辨率转换速度ADC基本原理ADC分类ADC的性能指标ADC的位数分辨率基准源转换速率量化误差 参考文献 DAC数模转换/ADC模数转换 单片机 AD/DA数模转换 模数转换(A/D)与数模转换(D/A) DAC基本原理 DAC将输入的数字量按权的大小,通过电阻网络转化为模拟量,再通过加法电路,转换为与数字量成比例的模拟量。 实际上就是二进制转换为十进制的过程。 基本组成包括锁存器、电子开关、基准源、权电阻网络和求和电路。 锁

coin的博客 3万+

问题:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码( 0~9)各出现了多少次?

问题:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit 0~9)各出现了多少次? 例如: 输入:1 55 输出:5 16 16 16 16 12 5 5 5 5 输入:1 99 输出:9 20 20 20 20 20 20 20 20 解题思路:在统计每个数码出现次数时,可以采用数组A[10]来存储,A[0]~A[9]存储的值对应0-9出现次数,然后开始对符合要求的...

qq_38467095的博客 4999

卡尔曼滤波、互补滤波与Tsinghua滤波:平衡车姿态感知的三大算法对比

本文对比了平衡车姿态感知中的卡尔曼滤波、互补滤波与Tsinghua滤波三大核心算法。互补滤波计算简单,适合入门;卡尔曼滤波理论最优但实现复杂;Tsinghua滤波则是一种面向嵌入式优化的轻量级方案,通过动态权重调整和零偏估计,在资源受限的MCU上实现了性能与效率的平衡,是智能车竞赛等场景的实用选择。

weixin_29232121的博客 349

习题:数字计数(数位DP+差分)

题目 原题来自:ZJOI 2010 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码 (digit) 各出现了多少次。 输入格式 仅包含一行两个整数 a,b含义如上所述。 输出格式 包含一行10个整数,分别表示0~9在[a,b]中出现了多少次。 思路 很明显如果直接求[a,b]比较难,因为要考虑到各种各样的进位问题 但是如果求[1,n]就比较简单了,于是差分的想法自然而然就出现了 接着...

weixin_43726650的博客 256

集成电路模拟版图入门-版图基础学习笔记(四)

第三部分:版图的准备 2. 设计规则 3) Design Rule 2. 设计规则 4) 规则定义 4.1 NW(N WELL) 2. 设计规则 4) 规则定义 4.1 NW(N WELL) 2. 设计规则 4) 规则定义 4.2 PO(Poly) 2. 设计规则 4) 规则定义 4.3 M1(Metal1) 2. 设计规则 4) 规则定义 4.4 VIA 3. DRC文件 3.1 DRC:Design Rule Check,设计规则检查。 3.2 DRC程序了解有关

weixin_52955333的博客 6737

音频分割:长语音音频 分割为 短语音音频 - python 实现

音频分割:长语音音频 分割为 短语音音频 - python 实现

DATABALL 的博客 1207

BZOJ1833 ZJOI2010 count 数字计数 【数位DP】

BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 Input 输入文件中仅包含一行两个整数a、b,含义如上所述。 Output 输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。 Sample Input 1 99 ...

Dream_maker的博客 315

2025华为OD机试真题+全流程解析+备考攻略+面试技巧+机考经验分享+Java/python/JS/C++/C语言实现

本专栏包含华为 OD 机试最新的 A卷+B卷+C卷+D卷+E卷题库,为全网最全、最新题库,500+真题。每一篇文章都包含了题目描述、解题思路以及实现代码。同时免费提供最新的在线OJ 刷题系统。已有上百名小伙伴通过刷真题题库通过了华为od机考,拒绝一切形式的代考,替考行为!!!以下是本专栏详细内容介绍:本专栏提供在线OJ刷题系统:OJ题库OJ系统注册&使用教程:OJ使用教程其他专栏以及答疑介绍:50+ 高频面试手撕真题,已有上百位小伙伴高频认证。1:机试没过,半年的冷冻期。2:已经订阅过我专栏的同学,推荐新人

MISAYAONE的博客 2226

[BZOJ 1833] count 数字计数 数位DP(附数位DP总结)

题目传送门:【BZOJ 1833】题目大意:给定两个正整数 a 和 b,求在 [a,b] 中的所有整数中,每个数码 (digit,指 0-9 ) 各出现了多少次。其中 a ≤ b ≤ 1012^{12}。题目分析:真正的题解在下面,前面为总结。由题,观察这道题的题目性质及数据范围,那么,这道题用线性的 for 一遍肯定是不行的了;于是,我们考虑缩小数据处理范围。又因为这道题满足“前缀和相减”的性质,

江澤妮可 2159

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

BZOJ1833 count 数字计数 数位dp基础题

链接: count 数字计数 思路: 1e12的范围使得“暴力枚举每个数,然后对一个数进行分解”的暴力做法显然走不通。 其实这题是最基础的数位dp,甚至没有限定特征,直接贴板子就好。 问[l,r]区间所有数位出现的次数,可以转化为求[0,l-1]和[0,r]两个区间数位出现的次数,对应数位相减即可。(消除下限) 考虑[0,n],设dp[i][j][k]为长度为i,首位为j的所有数字中k...

krypton12138的博客 497

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

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

bzoj1833: [ZJOI2010]count 数字计数(数位DP)

bzoj1833 题目表述:给定两个整数a和b,求在a到b的所有整数中,每个数码各出现了几次。 输入格式:一行两个整数a和b。 输出个数:一行包含10个整数,分别表示0~9出现了几次。 输入样例: 1 99 输出样例: 9 20 20 20 20 20 20 20 20 20 解析:一道标准的数位DP,dp[pos][sum]表示第pos...

diqiao4431的博客 170

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

bzoj1833 [ZJOI2010]count 数字计数——数位DP

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1833 有点需要想象呢; 预处理出一个数组f,表示在某一个位数时,包括前导0,每个数字出现的次数(仔细一想应该是一样的); 转移主要有两点: 1.对于 f[i-1],看第i位是几,它就被算了几次; 2.对于第 i 位上的数,后面有多少个数,它就被算了几次; 两个结合一下,...

aodan5477的博客 167

BZOJ-1833 [ZJOI2010]count 数字计数 数位DP

大家都很强, 可与之共勉。1833: [ZJOI2010]count 数字计数Time Limit: 3 Sec Memory Limit: 64 MB Submit: 3440 Solved: 1518 [Submit][Status][Discuss] Description给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 Input输入文件

Lazer2001 4658

【BZOJ】1833: [ZJOI2010]count 数字计数(数位dp)

http://www.lydsy.com/JudgeOnline/problem.php?id=1833 数位dp什么的最恶心了。 dfs时注意考虑两种边界,一种是此时正好在这个数上,那么答案应该加的是后边的数+1+dfs 否则就加10^(x-1)+dfs;这两个是显然的。自己多想想就懂了 具体看代码: #include <cstdio> #include &...

174

BZOJ 1833 count 数字计数 数位DP

BZOJ 1833

中国计算机学会成都七中(高新校区)委员会委员活动室 438

bzoj 1833 count 数字计数 数位dp

给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 30%的数据中,a<=b<=10^6; 100%的数据中,a<=b<=10^12。

便纵有千种风情 489

[BZOJ 1833][ZJOI 2010]count数字计数(数位DP)

题目链接http://www.lydsy.com/JudgeOnline/problem.php?id=1833思路我觉得这个思路应该是这个题的所有解法中最简单的了吧(PS:不是弱渣我想出来的,思路来自http://www.baidu.com/link?url=ZbIMSGqf0IbTsJBLQiIq-U17qN2ng4p57Vl_jVc0KKexmkh7Rg0JavRK2OmUKJZg1hoGfL

某沙茶的OI代码库 1382

【BZOJ1833】【ZJOI2010】count 数字计数 (数位DP)

Description 给定a,ba,ba,b,求出aaa到bbb之间所有的整数中所有的数字出现个数和。 Solution 设fi,j,kfi,j,kf_{i,j,k}为以jjj开头、长度为iii的所有数(允许前导0)中数字kkk的出现次数。 预处理出fi,j,kfi,j,kf_{i,j,k},然后数位DP即可。 感觉做复杂了点吧 ,应该有更简单的做法。 Source /****...

დ♂Hany01's Blog Space♂ღ 330

【bzoj1833】[ZJOI2010]count 数字计数 数位DP

Description给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。Input输入文件中仅包含一行两个整数a、b,含义如上所述。Output输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。Sample Input1 99 Sample Output9 20 20 20 20 20 20 20 20 20 HINT30%的数据中,a<

DQS的树洞 863

BZOJ 1833 ZJOI 2010 count 数字计数 数位DP

题目大意:问0~9这10个数字在[l,r]中出现过多少次。 思路:数位DP。以前只是听说过,并没有写过,写了才发现好闹心啊。。 预处理一个数组,f[i][j][k]表示长度为i,开头为j,数字k出现的次数。 对于一个数kXXXXXX,我们先处理1~999999,然后处理1000000~kXXXXXX 前面的东西很规则,可以直接调用f数组来解决。 对于后面不太规则的东西,按位处理。

(╯°口°)╯(┴—┴ 881

BZOJ 1833 ZJOI2010 count 数字计数 数位DP

题目大意:求[a,b]间所有的整数中0~9每个数字出现了几次 令f[i]为i位数(算前导零)中每个数出现的次数(一定是相同的,所以只记录一个就行了) 有f[i]=f[i-1]*10+10^(i-1) 然后照例十进制拆分 其中计算[0,999...9]的时候要从1~9枚举最高位,然后其余位调用f[i-1]即可 剩余部分已知位直接乘,未知位调用f[i] #include #include

世界 2945
上一篇: HDU-6356 Glad You Came (rmq)
下一篇: POJ-2728 Desert King (分数规划,最优比例生成树)
GoLakerswxy
博客等级 码龄9年 41粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值