BZOJ 1833: [ZJOI2010]count 数字计数
1833
思路:数位dp
代码:
#include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pi acos(-1.0) #define LL long long //#define mp make_pair #define pb push_back #define ls rt<<1, l, m #define rs rt<<1|1, m+1, r #define ULL unsigned LL #define pll pair<LL, LL> #define pii pair<int, int> #define mem(a, b) memset(a, b, sizeof(a)) #define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout); //head LL dp[20][20][2]; int a[20], cnt; LL dfs(int x, int pos, int res, bool zero, bool limit) {if(pos == -1) return res;if(!limit && ~dp[pos][res][zero]) return dp[pos][res][zero];int up = 9;if(limit) up = a[pos];LL ans = 0;for (int i = 0; i <= up; i++) {if(zero) {if(i == 0 && x == 0) ans += dfs(x, pos-1, res, zero&&i==0, limit&&i==up);else if(i == x) ans += dfs(x, pos-1, res+1, zero&&i==0, limit&&i==up);else ans += dfs(x, pos-1, res, zero&&i==0, limit&&i==up);}else {if(i == x) ans += dfs(x, pos-1, res+1, zero&&i==0, limit&&i==up);else ans += dfs(x, pos-1, res, zero&&i==0, limit&&i==up);}}if(!limit) dp[pos][res][zero] = ans;return ans;} LL solve(LL n, int x) {if(n == 0) return 0;cnt = 0;while(n) {a[cnt++] = n%10;n /= 10;}mem(dp, -1);return dfs(x, cnt-1, 0, 1, 1); } int main() {LL a, b;scanf("%lld %lld", &a, &b);for (int i = 0; i <= 9; i++) {printf("%lld%c", solve(b, i) - solve(a-1, i), " \n"[i==9]);}return 0; }
转载于:https://www.cnblogs.com/widsom/p/9293213.html
BZOJ 1833: [ZJOI2010]count 数字计数相关推荐
- bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 3528 Solved: 1553 [Submit ...
- BZOJ 1833 ZJOI2010 count 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- 1833: [ZJOI2010]count 数字计数
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2951 Solved: 1307 [Submit ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
- 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 数字计数USACO37 Cow Queueing 数数的梦(数位DP)
难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的--果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...
- bzoj1833: [ZJOI2010]count 数字计数 codevs1359 数字计数
bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...
- count 数字计数(bzoj 1833)
Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. Output 输出文 ...
最新文章
- Spring MVC 概述
- POJ 3046 Ant Counting
- [css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
- 去掉窗口_Flink 基础——窗口(Window)理论篇
- IntelliJ IDEA 内存优化最佳实践
- Codeforces 932D - Tree
- 机器学习算法 --- SVM (Support Vector Machine)
- 新版FMEA软件:特殊特性自动分类 免费申请试用(FMEAHunter)
- Vivado 2019.1下载与安装
- 黑群晖一键生成视频缩略图
- 颜色对照表(四)(16进制、RGB、CMYK、HSV、中英文名)
- mysql中key的用法_数据库中KEY的用法
- Java工程师进阶,Java全栈知识体系
- JDBC--DAOUtil封装
- Bugku杂项——旋转跳跃
- Java实现九宫格游戏
- rebuild node-sass npm install
- 找素数模板:马氏筛法【复杂度nlgnlgn】
- linux运行blast,linux blast
- 装完黑苹果怎么装windows_黑苹果安装教程,小编教你黑苹果怎么安装
热门文章
- 既然Tengine比Nginx更强大,为什么Tengine没有取代Nginx呢?
- 那个抗血栓机器人_美国DJO抗血栓压力袜
- elasticsearch java 分页查询_elasticsearch深度分页问题
- go语言开发环境搭建_GO语言开发环境搭建
- mschart走势图 vc_[VC] 解决MSChart闪烁的问题
- unity 下一帧执行_Unity中的Havok Physics物理引擎
- python x轴加范围_Python,Matplotlib,subplot:如何设置轴范围?
- python编程思维代码_Python编程快速上手——强口令检测算法案例分析
- R语言生信作图代码集合大全
- lisp语言代替python_Lisp 语言优点那么多,为什么国内很少运用?