【题目链接】

http://www.lydsy.com/JudgeOnline/problem.php?id=1833

【题意】

统计[a,b]区间内各数位出现的次数。

【思路】

设f[i][j][k]表示i位数,最高位为j,数位k出现的次数,则有递推式:

f[i][j][k]=sigma{ f[i-1][l][k] ,0<=l<=9 } + 10^(i-1)

第一项统计的是i-1位数中k的出现次数,后一项统计的是最高位k的出现数目。

将查询差分,对于一个数,先统计长度不超过len的,再统计长度=len但最高位比a[len]小的,再统计长度为len且最高位为a[len]的。

注意最后一项的统计,假设n为4321,我们要统计的就是:

4000..4299

4300..4319

4320..4321

假设我们要统计4000..4299,则有;

ans[k]+=f[3][3][k]

ans[4]+=321+1

【代码】

 #include<cstdio>
#include<cstring>
#include<iostream>
#define FOR(a,b,c) for(int a=b;a<=c;a++)
using namespace std; typedef long long ll;
const int N = ; struct Node{
ll a[N];
Node() {
memset(a,,sizeof(a));
}
ll& operator[] (const int& x) {
return a[x];
}
};
Node operator + (const Node& x,const Node& y) {
Node tmp;
FOR(i,,) tmp.a[i]=x.a[i]+y.a[i];
return tmp;
} int len,a[N];
ll e[N]; Node f[N][N]; void init(ll n)
{
len=;
while(n) {
a[++len]=n%;
n/=;
}
FOR(i,,) f[][i][i]=;
FOR(i,,) FOR(j,,) {
FOR(k,,)
f[i][j]=f[i][j]+f[i-][k];
f[i][j][j]+=e[i-];
}
}
Node calc(ll n)
{
Node ans;
if(!n) return ans;
memset(f,,sizeof(f));
init(n);
FOR(i,,len-) FOR(j,,)
ans=ans+f[i][j];
FOR(i,,a[len]-) ans=ans+f[len][i];
n%=e[len-];
ans[a[len]]+=n+;
for(int i=len-;i;i--) {
for(int j=;j<a[i];j++) ans=ans+f[i][j];
n%=e[i-];
ans[a[i]]+=n+;
}
return ans;
} int main()
{
e[]=;
FOR(i,,) e[i]=e[i-]*10ll;
ll x,y;
scanf("%lld%lld",&x,&y);
Node ans1=calc(y) , ans2=calc(x-);
FOR(i,,) printf("%lld ",ans1[i]-ans2[i]);
printf("%lld\n",ans1[]-ans2[]);
return ;
}

bzoj 1833 [ZJOI2010]count 数字计数(数位DP)的更多相关文章

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

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

  2. 1833: [ZJOI2010]count 数字计数——数位dp

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1833 省选之前来切一道裸的数位dp.. 题意 统计[a,b]中0~9每个数字出现的次数(不算 ...

  3. BZOJ 1833: [ZJOI2010]count 数字计数( dp )

    dp(i, j, k)表示共i位, 最高位是j, 数字k出现次数. 预处理出来. 差分答案, 对于0~x的答案, 从低位到高位进行讨论 -------------------------------- ...

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

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

  5. [bzoj1833][ZJOI2010]count 数字计数——数位dp

    题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...

  6. [BZOJ 1833] [ZJOI2010] count 数字计数 【数位DP】

    题目链接:BZOJ - 1833 题目分析 数位DP .. 用 f[i][j][k] 表示第 i 位是 j 的 i 位数共有多少个数码 k . 然后差分询问...Get()中注意一下,如果固定了第 i ...

  7. bzoj 1833: [ZJOI2010]count 数字计数【数位dp】

    非典型数位dp 先预处理出f[i][j][k]表示从后往前第i位为j时k的个数,然后把答案转换为ans(r)-ans(l-1),用预处理出的f数组dp出f即可(可能也不是dp吧--) #include ...

  8. BZOJ 1833: [ZJOI2010]count 数字计数

    Description 问 \([L,R]\) 中0-9的个数. Sol 数位DP. 预处理好长度为 \(i\), 最高位为 \(j\) 的数位之和. 然后从上往下计算,不要忘记往下走的同时要把高位的 ...

  9. bzoj1833: [ZJOI2010]count 数字计数 数位dp

    bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...

随机推荐

  1. log4j示例

    示例代码:此示例从控制台输入日志,设置了输出等级. # # Log4J Settings for log4j 1.2.x (via jakarta-commons-logging) # # The f ...

  2. aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到

    aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...

  3. json2.js使用参考

    json2.js的源码地址: https://github.com/douglascrockford/JSON-js Visual Studio用户可以直接通过Nuget来获得. json2.js提供 ...

  4. What the hell is Rotate?

  5. PAT-乙级-1036. 跟奥巴马一起编程(15)

    1036. 跟奥巴马一起编程(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 美国总统奥巴马不仅呼吁所有人 ...

  6. maven 解决 Eclipse is running in a JRE, but a JDK is

    解决安装了maven插件的myeclipse每次开启报错 The Maven Integration requires that Eclipse be running in a JDK, becaus ...

  7. uva 1421

    稍微有点新意的二分 #include<cstdio> #include<cstring> #include<algorithm> #include<cmath ...

  8. 数据聚合 & 分组:新一代系统监控的核心功能

    遥想 2015 年 8 月 17 日,Cloud Insight 还在梳理功能原型,畅想 Cloud Insight 存在的意义:为什么阿里云用户需要使用 Cloud Insight 来加强管理. 而 ...

  9. php关于private、public成员变量访问问题

    如果类里面定义了__get($name)方法,则不论类的private成员还是public成员,都能够在类的外面通过类似$class->name访问到.如果是public变量,则不会自动调用ge ...

  10. 阿里云 EDAS-HSF 用户指南

    阿里云 EDAS-HSF 用户指南 针对 EDAS v2.3.0©Alibaba EDAS 项目组2015/8/19 1 前言本文档旨在描述阿里云 EDAS 产品中应用服务化模块的基本概念,以及如何使 ...