【bzoj1833】[ZJOI2010]count 数字计数 数位DP
2016-03-15 09:42
501 查看
Description
给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。Input
输入文件中仅包含一行两个整数a、b,含义如上所述。Output
输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。Sample Input
1 99
Sample Output
9 20 20 20 20 20 20 20 20 20
HINT
30%的数据中,a<=b<=10^6;100%的数据中,a<=b<=10^12。
Source
Day1数位DP好弱啊好弱啊怎么办怎么办
这种题也就我这个傻X不会做吧
抄hzwer:dp[i][j][k]表示长度为i首位为j的数字中k出现的次数。细节在代码里…
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef long long LL; const int SZ = 20; const int INF = 1000000010; LL dp[SZ][SZ][SZ]; LL base[SZ]; void init() { base[1] = 1; for(int i = 2;i <= 13;i ++) base[i] = base[i - 1] * 10; for(int i = 0;i <= 9;i ++) dp[1][i][i] = 1; for(int i = 2;i <= 13;i ++) for(int j = 0;j <= 9;j ++) for(int k = 0;k <= 9;k ++) { for(int x = 0;x <= 9;x ++) dp[i][j][x] += dp[i - 1][k][x]; dp[i][j][j] += base[i - 1]; } } LL numa[SZ],numb[SZ]; int getws(LL n) { int t = 0; while(n) t ++,n /= 10; return t; } void calc(LL n,LL num[]) { if(n == 0) { num[0] = 1; return ; } int len = getws(n); for(int i = 1;i < len;i ++) for(int j = 1;j <= 9;j ++) for(int k = 0;k <= 9;k ++) num[k] += dp[i][j][k]; num[0] ++;//长度为1,首位为0在上面的for中没体现 LL x = n / base[len]; for(int i = 1;i < x;i ++) for(int j = 0;j <= 9;j ++) num[j] += dp[len][i][j]; n %= base[len]; num[x] += n + 1; for(int i = len - 1;i >= 1;i --) { LL x = n / base[i]; for(int j = 0;j < x;j ++)//这里枚举首位要有前导0 for(int k = 0;k <= 9;k ++) num[k] += dp[i][j][k]; n %= base[i]; num[x] += n + 1; //x作为首字母,出现次数是n+1次 } } int main() { init(); LL a,b; scanf("%lld%lld",&a,&b); calc(a - 1,numa); calc(b,numb); for(int i = 0;i <= 9;i ++) printf("%lld%c",numb[i] - numa[i],i == 9 ? '\n' : ' '); return 0; }
相关文章推荐
- SpringAOP注解方式监控方法执行情况
- QML中的SmoothedAnimation平滑动画
- Packagist / Composer 中国全量镜像
- Android 如何在service和BroadCastReceiver中 启动activity和alertdialog?
- [LeetCode]118. Pascal's Triangle
- 二叉树的实现
- C 语言字符 和字符串输出
- ACM、OI等比赛中的程序对拍问题
- swift 接水果游戏ios源码
- poj 2709 Sumsets
- Java序列化与反序列化
- IOS设备之armv6,armv7,armv7s,arm64
- Android仿iOS7的UISegmentedControl 分段
- iOS 最新版 CocoaPods 的安装流程
- Extjs中常用表单介绍与应用
- DJANGO中,用QJUERY的AJAX的json返回中文乱码的解决办法
- 【Geekband】Week 2 Notes
- swift 接水果游戏ios源码
- Python之路:进程、线程
- 将博客搬至CSDN