bzoj1833: [ZJOI2010]count 数字计数 && codevs1359 数字计数
这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一样啦
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
LL read(){
LL ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
LL f[][][],w[],cur=,ans1[],ans2[];
void prepare(){
w[]=; for(int i=;i<=;i++) w[i]=w[i-]*;
for(int i=;i<=;i++) f[][i][i]=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
for(int k=;k<=;k++){
for(int z=;z<=;z++)
f[i][j][k]+=f[i-][z][k];
if(j==k) f[i][j][k]+=w[i];
}
}
void work1(LL n){
int cur=;
if(!n){ans1[]=; return ;}
while(w[cur]>n) cur--;
LL tot=;
for(int i=;i<cur;i++) tot+=(w[i+]-w[i])*i;
tot+=(n-w[cur]+)*cur;
LL v=n/w[cur];
for(int i=;i<=;i++)
for(int j=;j<v;j++)
ans1[i]+=f[cur][j][i];
ans1[v]=ans1[v]+n%w[cur]+;
n=n%w[cur];
for(int i=cur-;i;i--){
v=n/w[i];
for(int j=;j<=;j++)
for(int k=;k<v;k++) ans1[j]+=f[i][k][j];
ans1[v]=ans1[v]+n%w[i]+;
n=n%w[i];
}
//printf("%lld %lld\n",tot,ans1[0]);
for(int i=;i<=;i++) tot-=ans1[i]; ans1[]=tot;
}
void work2(LL n){
int cur=;
if(!n){ans2[]=; return ;}
while(w[cur]>n) cur--;
LL tot=;
for(int i=;i<cur;i++) tot+=(w[i+]-w[i])*i;
tot+=(n-w[cur]+)*cur;
LL v=n/w[cur];
for(int i=;i<=;i++)
for(int j=;j<v;j++)
ans2[i]+=f[cur][j][i];
ans2[v]=ans2[v]+n%w[cur]+;
n=n%w[cur];
for(int i=cur-;i;i--){
v=n/w[i];
for(int j=;j<=;j++)
for(int k=;k<v;k++) ans2[j]+=f[i][k][j];
if(v) ans2[v]=ans2[v]+n%w[i]+;
n=n%w[i];
}
//printf("%lld %lld\n",tot,ans2[0]);
for(int i=;i<=;i++) tot-=ans2[i]; ans2[]=tot;
}
int main()
{
prepare();
work1(read()-); work2(read());
for(int i=;i<=;i++){
printf("%lld",ans2[i]-ans1[i]);
if(i!=) printf(" ");
}
return ;
}
bzoj1833: [ZJOI2010]count 数字计数 && codevs1359 数字计数的更多相关文章
- [BZOJ1833][ZJOI2010]count 数字计数
[BZOJ1833][ZJOI2010]count 数字计数 试题描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入 输入文件中仅包含一行两个整数a ...
- BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- [BZOJ1833][ZJOI2010]Count数字计数(DP)
数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...
- [bzoj1833][ZJOI2010]count 数字计数——数位dp
题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...
- BZOJ1833 [ZJOI2010]count 数字计数 【数学 Or 数位dp】
题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式 输出文件中包含一行10个整数, ...
- bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)
难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的……果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- 【数位dp】bzoj1833: [ZJOI2010]count 数字计数
数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...
随机推荐
- LinqToExcel使用简介一
最近才看到原来也可以用Linq来访问Excel,功能还挺强大的.要使用这个功能,首先得下载一个LinqToExcel的相关文件,然后就可以调用相关的方法. 使用前面介 ...
- define 和 const常量有什么区别?
define在预处理阶段进行替换,const常量在编译阶段使用 宏不做类型检查,仅仅进行替换,const常量有数据类型,会执行类型检查 define不能调试,const常量可以调试 define定义的 ...
- Qt Qwdget 汽车仪表知识点拆解6 自定义控件
先贴上效果图,注意,没有写逻辑,都是乱动的 这里说一下控件自定义 图中标出的部分都是自定义的控件 这里如果我们有批量类似的功能,就可以使用自定义控件的方式,这里我已下面的自定义控件说一下,上面的在上一 ...
- 自动化测试---mybatis的使用
mybatis如何实现了对数据库的操作: 1.通过Resources.getResourceAsReader()或者 Resources.getResourceAsStream()加载mybatis. ...
- 《Deep Learning》第二章 线性代数 笔记
第二章 线性代数 2.1 名词 标量(scalar).向量(vector).矩阵(matrix).张量(tensor) 2.2 矩阵和向量相乘 1. 正常矩阵乘法: 2. 向量点积: 3. Hadam ...
- HDU 4436 str2int(后缀自动机)(2012 Asia Tianjin Regional Contest)
Problem Description In this problem, you are given several strings that contain only digits from '0' ...
- Linux arm64的虚拟内存布局
原创翻译,转载请注明出处. 页表转换arm64在硬件体系结构上支持4级的每页大小为4K的页表转换,也支持3级的页大小64KB的页表转换.在linux arm64中,如果页的大小为4KB,使用3级页表转 ...
- xml解析标签
//获取两个标签之间的值 private static string GetStr(string message, string strStart, string strEnd) { ; ; star ...
- Linux建立FTP服务器
http://blog.chinaunix.net/uid-20541719-id-1931116.html http://www.cnblogs.com/hnrainll/archive/2011/ ...
- (转)Loadrunner监控Linux的17个指标
1.Average load:Average number of processes simultaneously in Ready state during the last minute. 上 ...