BZOJ_1833_[ZJOI2010]_数字计数_(数位dp)
描述
http://www.lydsy.com/JudgeOnline/problem.php?id=1833
统计\(a~b\)中数字\(0,1,2,...,9\)分别出现了多少次.
分析
数位dp真是细节又多又容易出错,我都懒得看题解,所以也就懒得写题解了...
注意细节吧还是...
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
ll a,b;
ll A[],B[],num[];
ll f[][][]; void solve(ll x,ll *a){
if(x==) return;
if(x<){
for(int i=;i<=x;i++) a[i]=;
return;
}
int cnt=;
ll t=;
while(x) num[++cnt]=x%, x/=;
for(int i=;i<cnt;i++)for(int j=;j<=;j++)for(int k=;k<=;k++) a[k]+=f[i][j][k];
for(int i=;i<cnt;i++){
for(int j=;j<num[i];j++)for(int k=;k<=;k++) a[k]+=f[i][j][k];
a[num[i]]+=t+; t=t+num[i]*(ll)pow(,i-);
}
for(int j=;j<num[cnt];j++)for(int k=;k<=;k++) a[k]+=f[cnt][j][k];
a[num[cnt]]+=t+;
}
int main(){
scanf("%lld%lld",&a,&b);
for(int i=;i<=;i++) f[][i][i]=;
for(int i=;i<=;i++){
for(int j=;j<=;j++)for(int k=;k<=;k++) f[i][][k]+=f[i-][j][k];
for(int j=;j<=;j++)for(int k=;k<=;k++) f[i][j][k]=f[i][][k];
for(int j=;j<=;j++) f[i][j][j]+=(ll)pow(,i-);
}
solve(b,B); solve(a-,A);
for(int k=;k<;k++) printf("%lld ",B[k]-A[k]);
printf("%lld\n",B[]-A[]);
return ;
}
1833: [ZJOI2010]count 数字计数
Time Limit: 3 Sec Memory Limit: 64 MB
Submit: 2569 Solved: 1132
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
30%的数据中,a<=b<=10^6;
100%的数据中,a<=b<=10^12。
Source
BZOJ_1833_[ZJOI2010]_数字计数_(数位dp)的更多相关文章
- BZOJ_1833_[ZJOI2010]count 数字计数_数位DP
BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...
- BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...
- 【BZOJ】1833: [ZJOI2010] count 数字计数(数位dp)
题目 传送门:QWQ 分析 蒟蒻不会数位dp,又是现学的 用$ dp[i][j][k] $ 表示表示长度为i开头j的所有数字中k的个数 然后预处理出这个数组,再计算答案 代码 #include < ...
- 【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)
点此看题面 大致题意: 求在给定的两个正整数\(a\)和\(b\)中的所有整数中,\(0\sim9\)各出现了多少次. 数位\(DP\) 很显然,这是一道数位\(DP\)题. 我们可以用前缀和的思想, ...
- [BZOJ 1833] [ZJOI2010] count 数字计数 【数位DP】
题目链接:BZOJ - 1833 题目分析 数位DP .. 用 f[i][j][k] 表示第 i 位是 j 的 i 位数共有多少个数码 k . 然后差分询问...Get()中注意一下,如果固定了第 i ...
- bzoj 1833: [ZJOI2010]count 数字计数【数位dp】
非典型数位dp 先预处理出f[i][j][k]表示从后往前第i位为j时k的个数,然后把答案转换为ans(r)-ans(l-1),用预处理出的f数组dp出f即可(可能也不是dp吧--) #include ...
- bzoj 1833 [ZJOI2010]count 数字计数(数位DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1833 [题意] 统计[a,b]区间内各数位出现的次数. [思路] 设f[i][j][k ...
- 【洛谷】2602: [ZJOI2010]数字计数【数位DP】
P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a ...
- 洛谷P2602 [ZJOI2010]数字计数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2602 题目大意: 计算区间 \([L,R]\) 范围内 \(0 \sim 9\) 各出现了多少次? 解题思路: 使用 ...
随机推荐
- 使用FOR循环语句在屏幕上输出一个由星号组成的直角三角形
题目要求: 请用C++的信息输出方式,使用循环语句在屏幕上输出一个由星号组成的直角三角形,形状如下: * ** *** **** ***** 要求: 完全使用C++的信息输出方式,即cout以及流插入 ...
- VIM 同义词
vim-online-thesaurus A Vim plugin for looking up words in an online thesaurus, Now thesaurus.com 一.原 ...
- 暑假集训(2)第四弹 ----- 敌兵布阵(hdu1166)
D - 敌兵布阵 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64bit ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 配置php的CAS客户端
1.下载安装xmapp 2.开启Apache服务. 3.下载php的CAS客户端源码包(我使用的是CAS-1.2.0.tgz),解压到xmap的htdocs目录下(D:\xmapp\htdocs),进 ...
- Apache服务
Apache服务的安装: Apache服务程序的软件包名称是:httpd 安装方法: rpm软件包安装.源码编译安装.yum安装 yum install httpd 安装完成后启动: revice h ...
- call_user_func
(PHP 4, PHP 5) call_user_func — 把第一个参数作为回调函数调用 mixed call_user_func ( callable $callback [, mixed $p ...
- outlet删除不完全
今天在用iOS写个计算器的时候,遇到的一个小bug,新手,太新了,不之所错. 直接上码: Terminating app due to uncaught exception 'NSUnknownKey ...
- UniqueID,页面子控件唯一标示
aspx: <form id="form1" runat="server"> <asp :Repeater ID="MyDa ...
- 关于H5 storage 的一些注意事项以及用法
在我们使用H5 storage之前,先了解一下storage的介绍吧: Storage模块管理应用本地数据存储,用于应用数据的保存和读取,应用本地数据localStorage,sessionStora ...