原题链接:https://www.luogu.org/problemnew/show/P2602

数字计数

题目描述

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

输入输出格式
输入格式:

输入文件中仅包含一行两个整数a、b,含义如上所述。

输出格式:

输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。

输入输出样例
输入样例#1:

1 99

输出样例#1:

9 20 20 20 20 20 20 20 20 20

说明

30%的数据中,a<=b<=10^6;

100%的数据中,a<=b<=10^12。

题解

数位dpdpdp第一题。。。

感觉记忆化搜索很可写的样子,边界也挺清晰的。

dp[i][0/1][j][0/1]dp[i][0/1][j][0/1]dp[i][0/1][j][0/1]表示从高到低第iii位,是否可以遍历0∼90\sim 90∼9,当前统计的数字出现次数,是否有前导000时统计数字的个数。

代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int M=15;
ll dp[M][2][M][2],n,m;
int num[M],len;
ll dfs(int len,bool all,int cot,bool zero,int now)
{ll ans=0;if(!len)return cot;if(~dp[len][all][cot][zero])return dp[len][all][cot][zero];for(int i=0;i<=9&&(all||i<=num[len]);++i)ans+=dfs(len-1,all||i<num[len],cot+((!zero||i)&&(i==now)),zero&&(i==0),now);return dp[len][all][cot][zero]=ans;
}
ll work(ll x,int now)
{for(len=0;x;x/=10)num[++len]=x%10;memset(dp,-1,sizeof(dp));return dfs(len,0,0,1,now);
}
void in(){scanf("%lld%lld",&n,&m);}
void ac(){for(int i=0;i<=9;++i)printf("%lld ",work(m,i)-work(n-1,i));}
int main(){in(),ac();}

Luogu2602[ZJOI2010] 数字计数相关推荐

  1. BZOJ1833:[ZJOI2010]数字计数——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1833 https://www.luogu.org/problemnew/show/P2602 给定两 ...

  2. [ZJOI2010]数字计数

    一眼数位dp,但...调试了好久.. /*** Problem:Count* Author:Shun Yao* Time:2013.5.31* Result:Accepted* Memo:DP*/#i ...

  3. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  4. 1833: [ZJOI2010]count 数字计数

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2951  Solved: 1307 [Submit ...

  5. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)

    1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...

  6. bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 3528  Solved: 1553 [Submit ...

  7. DP专练2 (大理石 + [ZJOI 2010]数字计数)

    你肯定以为DP专练会有很多题, 但是请考虑一下本仙女的DP码力,一次性能更几个题... 来吧,别害怕呀~~ 文章目录 大理石 题目 题解 代码实现 数字计数 题目 题解 代码实现 大理石 题目 林老师 ...

  8. BZOJ 1833 ZJOI2010 count 数字计数 数位DP

    题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...

  9. [BZOJ1833][ZJOI2010]Count数字计数(DP)

    数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...

  10. bzoj1833: [ZJOI2010]count 数字计数USACO37 Cow Queueing 数数的梦(数位DP)

    难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的--果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...

最新文章

  1. 如何用python读取文本中指定行的内容
  2. Cassandra 数据分区
  3. vue中的nextTick
  4. mysql完整字段包括_MySQL字段类型最全解析
  5. vue中用的swiper轮播图的用法github的地址
  6. linux块设备驱动中断程序,linux设备驱动归纳总结(六):1.中断的实现
  7. python使用t-sne算法降维,方便可视化
  8. shellcode编写技巧
  9. javascript进阶——Ajax
  10. 【NOIP2015】【Luogu2615】神奇的幻方(模拟填数)
  11. Q120:PBRT-V3,“直接光照”积分器(14.3章节)(翻译不下去了)
  12. GIS案例练习-----------第八天
  13. 黑鲨创建nt6引导出错_黑苹果神器,一键生成OpenCore EFI 文件
  14. 2022年作为一个中年程序员写给35岁的自己
  15. 对客户进行分级管理的原因
  16. linux绝育玩客云_玩客云实用指南(真·无痛绝育),附玩物下载对比
  17. 多个containers 共用一个pvc_长兴PVC废料回收一斤多少钱,ps废料回收
  18. 【视频开发】【CUDA开发】ffmpeg nvenc编码
  19. 安利几款win10小工具
  20. C++ 学生成绩管理系统

热门文章

  1. Chisel:基于HTTP的快速稳定TCPUDP隧道工具
  2. Raki的读paper小记:SimCSE: Simple Contrastive Learning of Sentence Embeddings
  3. .NET core ABP 获取远程IP地址
  4. android画板笔锋实现
  5. SonarQube规则之坏味道类型
  6. [转]SAPUI5 (01) - OpenUI5环境搭建
  7. nodejs,webpack安装以及初步运用
  8. SQL Server 日期+4位流水号
  9. cocos2dx box2d使用(一)
  10. HTML5学习笔记简明版(1):HTML5介绍与语法