数位DP学傻了,怎么写最后都写不下去了。

这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧。

首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超。

f[i][j][k]表示所有i位数(可以有前导零),第一位数为j,数字k出现的次数。直接$O(\omega^4)$转移即可。

接下来只需要统计[1,n]中某个数字出现的次数,分两种情况。

1. 第一位是0:这个直接做就好了。

2. 第一位不是0:枚举第一个小于原数的位置,同样直接转移。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 5 typedef long long ll;
 6 using namespace std;
 7
 8 const int N=15;
 9 ll a,b,d[N],bin[N],f[N][N][N],res[N];
10
11 void solve(ll x,int flag){
12     int len=0; ll tt=x;
13     memset(d,0,sizeof(d));
14     while (x) d[++len]=x%10,x/=10;
15     rep(i,1,len-1) rep(j,1,9) rep(k,0,9) res[k]+=f[i][j][k]*flag;
16     for (int tmp=len; tmp; tmp--){
17         rep(i,(tmp==len),d[tmp]-1)
18             rep(j,0,9) res[j]+=f[tmp][i][j]*flag;
19         res[d[tmp]]+=(tt%bin[tmp]+1)*flag;
20     }
21 }
22
23 int main(){
24     freopen("bzoj1833.in","r",stdin);
25     freopen("bzoj1833.out","w",stdout);
26     scanf("%lld%lld",&a,&b);
27     bin[1]=1;
28     rep(i,2,13) bin[i]=bin[i-1]*10;
29     rep(i,0,9) f[1][i][i]=1;
30     rep(i,2,13) rep(j,0,9) rep(k,0,9){
31         rep(p,0,9) f[i][j][p]+=f[i-1][k][p];
32         f[i][k][k]+=bin[i-1];
33     }
34     solve(b,1); solve(a-1,-1);
35     rep(i,0,9) printf("%lld ",res[i]);
36     return 0;
37 }

转载于:https://www.cnblogs.com/HocRiser/p/9279210.html

[BZOJ1833][ZJOI2010]Count数字计数(DP)相关推荐

  1. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)

    1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...

  2. bzoj1833: [ZJOI2010]count 数字计数USACO37 Cow Queueing 数数的梦(数位DP)

    难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的--果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...

  3. bzoj1833: [ZJOI2010]count 数字计数 codevs1359 数字计数

    bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...

  4. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  5. 1833: [ZJOI2010]count 数字计数

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2951  Solved: 1307 [Submit ...

  6. bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 3528  Solved: 1553 [Submit ...

  7. BZOJ 1833 ZJOI2010 count 数字计数 数位DP

    题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...

  8. BZOJ 1833: [ZJOI2010]count 数字计数

    1833 思路:数位dp 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se seco ...

  9. 【ZJOI2010】数字计数 数位dp

    比较直接的数位dp,但不是很好写 注: 1.每一位作为最高位的时候要统计 2.每一位一个周期的个数要统计 3.每一位作为不确定的最高位的个数要统计 4.统计分两部分:当前位和以后位 码: #inclu ...

最新文章

  1. java 字符流与字节流区别_JAVA 字符流与字节流的区别
  2. Nginx虚拟主机配置
  3. 阿尔法大蛋智能机器人功能_智能机器人怎么选?阿尔法蛋大蛋2.0助力孩子新学期...
  4. Linux/Unix环境下的make命令详解
  5. 如果你需要在 XHTML 中声明 DOCTYPE,必须使用到jsp:text动作元素
  6. gcc 中的__attribute__ ((packed)) gcc移植,内存对齐.结构体对齐-转
  7. .net Remoting(1)——起点,从示例做起
  8. [Python] random.uniform( ) 函数教程与实例解析
  9. jde 动态添加筛选条件的注意事项
  10. 2022-2028全球与中国质量管理体系软件市场现状及未来发展趋势
  11. Java架构师和大数据架构师的区别是什么?哪个更有发展前景?
  12. 临安推进智慧交通频频升级
  13. ajax传参后台中文乱码
  14. [nrf51][nrf52] nrfconnect 安装说明指南
  15. 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些
  16. 如何快速判断一个文件是否为病毒
  17. CGB2106-Day03
  18. 学校员工管理系统流程图以及项目源码(c++超详细)
  19. 双十二:2017这些活动不可错过
  20. TeamCity自动编译设置教程

热门文章

  1. 从阿里前端工程化中台实践,看中台建设的舍与得
  2. K8s 工程师必懂的 10 种 Ingress 控制器
  3. PS5独占游戏RETURNAL:华丽的黑暗电子声音是如何制作的(新 3D 音频引擎)下
  4. 5年,14款近满分神作,这个独立团队打造了他们的游戏宇宙
  5. 放置等于弃置?放置类游戏是否是市场下一个风口?
  6. 如何“漂亮”地解决dota类游戏网络延迟同步?
  7. 剑网三《谢云流传》,展现的庞大世界观,背后的故事如何?
  8. 前端性能优化-DNS解析优化
  9. 查看MongoDB索引的使用,管理索引
  10. Oracle约束的关键字Enable/Disable/Validate/Novalidate