BZOJ 1833 【ZJOI2010】 数字计数
题目链接:数字计数
没啥好说的,裸裸的数位\(dp\)。
先枚举当前是算数字\(x\)出现的次数,设\(f_{i,j}\)表示从高位往低位\(dp\),\(dp\)完了前\(i\)位之后\(x\)出现了\(j\)次的方案数。然后再加一维,表示当前这一位能否自由选数(也就是说之前是否是一路选最大值过来的)。转移分情况讨论一下就好了。
注意这种写法还有一点情况,就是算\(0\)出现的次数时需要减去区间内前导\(0\)的个数。
下面贴代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout) using namespace std;
typedef long long llg; llg l,r,f[21][21][2],mi[21];
int a[21],b[21],l1,l2; void divide(llg x,int *s,int &len){
llg y=x; while(y) len++,y/=10;
for(int i=len;i;i--) s[i]=x%10,x/=10;
} llg work(int *s,int n,int x){
f[0][0][1]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=i;j++){
f[i][j][0]=f[i-1][j][0]*9;
if(j) f[i][j][0]+=f[i-1][j-1][0];
if(s[i]>x){
f[i][j][0]+=f[i-1][j][1]*(s[i]-1);
if(j) f[i][j][0]+=f[i-1][j-1][1];
}
else f[i][j][0]+=f[i-1][j][1]*s[i];
if(s[i]==x){
if(j) f[i][j][1]=f[i-1][j-1][1];
else f[i][j][1]=0;
}
else f[i][j][1]=f[i-1][j][1];
}
llg now=0;
for(int i=1;i<=n;i++) now+=i*(f[n][i][0]+f[n][i][1]);
if(!x){
mi[0]=1; now-=n;
for(int i=1;i<n;i++) mi[i]=mi[i-1]*10;
for(int i=1;i<n;i++) now-=(mi[i]-mi[i-1])*(n-i);
}
return now;
} int main(){
File("a");
scanf("%lld %lld",&l,&r); l--;
divide(l,a,l1); divide(r,b,l2);
for(int i=0;i<=9;i++){
if(i) printf(" ");
printf("%lld",work(b,l2,i)-work(a,l1,i));
}
return 0;
}
BZOJ 1833 【ZJOI2010】 数字计数的更多相关文章
- UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)
题目链接 \(Description\) 求\([l,r]\)中\(0,1,\cdots,9\)每个数字出现的次数(十进制表示). \(Solution\) 对每位分别DP.注意考虑前导0: 在最后统 ...
- 1833. [ZJOI2010]数字计数【数位DP】
Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. Output 输出文 ...
- BZOJ 1833 count 数字计数
sb数位dp. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...
- 【洛谷】2602: [ZJOI2010]数字计数【数位DP】
P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a ...
- P2602 [ZJOI2010]数字计数(递推)
P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的\(i\)位数中,每个数的出现次数都是相等的.所以我们可以设\(f(i)\)为\(i\)位数每个数的出现次数 ...
- P2602 [ZJOI2010]数字计数&P1239 计数器&P4999 烦人的数学作业
P2602 [ZJOI2010]数字计数 题解 DFS 恶心的数位DP 对于这道题,我们可以一个数字一个数字的求 也就是分别统计区间 [ L , R ] 内部数字 i 出现的次数 (0<=i&l ...
- 数位dp详解&&LG P2602 [ZJOI2010]数字计数
数位dp,适用于解决一类求x~y之间有多少个符合要求的数或者其他. 例题 题目描述 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除 ...
- 洛谷P2602 [ZJOI2010]数字计数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2602 题目大意: 计算区间 \([L,R]\) 范围内 \(0 \sim 9\) 各出现了多少次? 解题思路: 使用 ...
- BZOJ 1833: [ZJOI2010]count 数字计数( dp )
dp(i, j, k)表示共i位, 最高位是j, 数字k出现次数. 预处理出来. 差分答案, 对于0~x的答案, 从低位到高位进行讨论 -------------------------------- ...
- [BZOJ 1833] [ZJOI2010] count 数字计数 【数位DP】
题目链接:BZOJ - 1833 题目分析 数位DP .. 用 f[i][j][k] 表示第 i 位是 j 的 i 位数共有多少个数码 k . 然后差分询问...Get()中注意一下,如果固定了第 i ...
随机推荐
- 【Android】安卓中常用的图片加载方法
一.通过相机选图片: 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- oracle的分页查询,mabatis的sql配置
<select id="getCardcaseByPage" resultType="Cardcase" > select * from ( sel ...
- linux :故障提示:Error:No suitable device found: no device found for connection "System eth0"
解决:1./etc/udev/rules.d/70-persistent-net.rules 中的mac地址2.网卡配置文件ifcfg-eth0中的mac地址3.ifconfig中的mac地址以上三个 ...
- 170509、文本编辑器编写的shell脚本在linux下无法执行的解决方法
今天碰到一个奇怪的问题,编写好的shell脚本再linux上执行一直提示找不到文件或目录,后来想想是文本编辑器的问题,记录下来!!! 1.查看当前文本格式 Notepad++界面中,在右下角有文件格式 ...
- PHP获取目录和的方法通过魔术变量;通过超级全局变量;通过相关函数等等:
<?php /** * PHP获取路径或目录实现 * @link http://www.phpddt.com */ //魔术变量,获取当前文件的绝对路径 echo "__FILE__: ...
- ora-28056错误解决
问题描述:今天有同事找我,说是oracle数据库的监听器出现问题,我连接服务器查看后,发现不是监听器问题,而是进程连接数已经达到150个了,客户端连接不上服务器,因其是测试服务器,重启服务器后再次sq ...
- ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a
第五章中完整的训练MNIST数据的神经网络模型的程序代码中,直接运行程序的话会遇到以下的错误. 把下面的这行代码 # 计算交叉熵及其平均值 cross_entropy = tf.nn.sparse_s ...
- Spring - Bean Definition Bean定义 给容易提供元数据的3方法
Spring Bean Definition https://www.tutorialspoint.com/spring/spring_bean_definition.htm The objects ...
- In ZeroDB, the client is responsible for the database logic. Data encryption, decryption, and compression also happen client side. Therefore, the server never has any knowledge about the data, its str
zerodb/index.rst at master · zerodb/zerodb https://github.com/zerodb/zerodb/blob/master/docs/source/ ...
- VirtualBox Guest Additions installation
在使用VirtualBox为CentOS安装增强功能时,输出是: 文本: Verifying archive integrity... All good. Uncompressing VirtualB ...