[BZOJ1833][ZJOI2010]count 数字计数
[BZOJ1833][ZJOI2010]count 数字计数
试题描述
给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。
输入
输入文件中仅包含一行两个整数a、b,含义如上所述。
输出
输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。
输入示例
输出示例
数据规模及约定
30%的数据中,a<=b<=10^6;
100%的数据中,a<=b<=10^12。
题解
数位 dp,许多恶心的边界条件需要考虑。
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cctype>
- #include <algorithm>
- using namespace std;
- #define LL long long
- LL read() {
- LL x = 0, f = 1; char c = getchar();
- while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }
- while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }
- return x * f;
- }
- #define maxn 20
- LL f[maxn][maxn][maxn], ans[maxn], ten[maxn];
- void sum(LL x, int fl) {
- if(x < 0) return ;
- if(!x) ans[0] += fl;
- LL tot[maxn], tx = x;
- memset(tot, 0, sizeof(tot));
- int num[maxn], cnt = 0;
- while(x) num[++cnt] = x % 10, x /= 10;
- for(int k = 0; k <= 9; k++)
- for(int i = 1; i < cnt; i++)
- for(int j = (i == 1 ? 0 : 1); j <= 9; j++) tot[k] += f[k][i][j];
- // for(int i = 0; i <= 9; i++) printf("%lld%c", tot[i], i < 9 ? ' ' : '\n');
- for(int i = cnt; i; i--) {
- LL sum = 0;
- for(int k = 0; k <= 9; k++)
- for(int j = (i == cnt && i > 1 ? 1 : 0); j < num[i]; j++) tot[k] += f[k][i][j];
- tot[num[i]] += tx % ten[i-1] + 1;
- }
- // for(int i = 0; i <= 9; i++) printf("%lld%c", tot[i], i < 9 ? ' ' : '\n');
- for(int i = 0; i <= 9; i++) ans[i] += tot[i] * fl;
- return ;
- }
- int main() {
- ten[0] = 1;
- for(int i = 1; i < 13; i++) ten[i] = ten[i-1] * 10;
- for(int k = 0; k <= 9; k++) f[k][1][k] = 1;
- for(int k = 0; k <= 9; k++)
- for(int i = 1; i <= 13; i++)
- for(int j = 0; j <= 9; j++) {
- // if(k == 1) printf("%d %d %d: %lld\n", k, i, j, f[k][i][j]);
- for(int x = 0; x <= 9; x++)
- f[k][i+1][x] += f[k][i][j] + (x == k) * ten[i-1];
- }
- LL a = read(), b = read();
- sum(b, 1); sum(a - 1, -1);
- for(int i = 0; i <= 9; i++) printf("%lld%c", ans[i], i < 9 ? ' ' : '\n');
- return 0;
- }
做的时候最好用暴力对拍一下。。。
[BZOJ1833][ZJOI2010]count 数字计数的更多相关文章
- 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
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- bzoj1833: [ZJOI2010]count 数字计数 && codevs1359 数字计数
bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...
- [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而已,枚举全 ...
- 【数位dp】bzoj1833: [ZJOI2010]count 数字计数
数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...
随机推荐
- jquery控制滚动条改变上面固定(fixed)导航条或者搜索框的属性
<script type="text/javascript"> $(document).ready(function(){ $(window).scroll( func ...
- JavaWeb学习笔记——SAX解析
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHa ...
- 解决问题--VS2012中一个Panel覆盖另一个Panel时拖动时容易造成两个控件成父子关系的避免
在*.Designer.cs中,假如想把panel1覆盖到panel2上,但是VS自动让panel1成为panel2的子控件了,在文件中会有this.panel2.Controls.Add(this. ...
- nginx重定向配置
# /etc/nginx/nginx.conf #写在server,location核心模块中,if也可以写.$http_host客户端设法要到达主机的主机名 if ($http_host !~ “^ ...
- linux sort,uniq,cut,wc,tr命令详解
sort是在Linux里非常常用的一个命令,对指定文件进行排序.去除重复的行 sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sor ...
- xss漏洞挖掘小结
xss漏洞挖掘小结 最近,在挖掘xss的漏洞,感觉xss真的不是想象的那样简单,难怪会成为一类漏洞,我们从防的角度来讲讲xss漏洞的挖掘方法: 1.过滤 一般服务器端都是采用这种方式来防御xss攻击, ...
- Simple colum formatting in Yii 2 GridView
A very important widget in the business apps development is the GridView control. In this post I wil ...
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的. ...
- Java7的异常处理新特性-addSuppressed()方法等
开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...
- Java Runtime.availableProcessors()方法
Java Runtime.availableProcessors()方法用法实例教程. 描述 java.lang.Runtime.availableProcessors() 方法返回到Java虚拟 ...