学习了一波记忆化数位dp后写这题...我好像写的都跟大家的不一样???跑的还挺快的???(其实全世界一样都是0ms...)

  题目大意:求[a,b]中0~9分别出现几次。(a,b<=10^12)

  dp[pos][num][sum]表示前pos位,求num出现几次,这个数前pos位num已经出现sum次,前导零也很好处理,套记忆化模板就行了。

  (太久没写博客了水一篇...(雾

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#define ll long long
using namespace std;
ll dp[20][20][20],a[20],l,r;
void read(ll &k)
{k=0;ll f=1;char c=getchar();while(c>'9'||c<'0')c=='-'&&(f=-1),c=getchar();while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar();k*=f;
}
ll dfs(int pos,int num,ll sum,bool lead,bool limit)
{if(pos==0)return sum;if(!limit && !lead && dp[pos][num][sum]!=-1)return dp[pos][num][sum];int up=limit?a[pos]:9;ll ans=0;if(!lead||pos==1)ans+=dfs(pos-1,num,sum+(num==0),0,limit && a[pos]==0);else ans+=dfs(pos-1,num,sum,1,limit && a[pos]==0);for(int i=1;i<=up;i++)ans+=dfs(pos-1,num,sum+(num==i),0,limit && a[pos]==i);if(!limit && !lead)dp[pos][num][sum]=ans;return ans;
}
ll solve(ll x,int num)
{if(x<0)return 0;if(x==0)return num==0?1:0;int pos=0;while(x){a[++pos]=x%10;x/=10;}return dfs(pos,num,0,1,1);
}
int main()
{read(l);read(r);memset(dp,-1,sizeof(dp));for(int i=0;i<=8;i++)printf("%lld ",solve(r,i)-solve(l-1,i));printf("%lld\n",solve(r,9)-solve(l-1,9));
}

View Code

转载于:https://www.cnblogs.com/Sakits/p/6815468.html

bzoj1833: [ZJOI2010]count 数字计数(数位dp)相关推荐

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

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

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

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

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

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

  4. [BZOJ1833][ZJOI2010]Count数字计数(DP)

    数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
  2. oracle导入dmp方法,oracle dmp文件导入方法
  3. VS可视化调试学习总结
  4. 【译】Privacy and machine learning: two unexpected allies
  5. cmake使用示例与整理总结
  6. 【剑指offer】面试题30:包含min函数的栈
  7. Python高级——正则表达式与re模块
  8. 交叉编译docker_端侧推理引擎Tengine初识:安卓平台交叉编译并跑通MobileNetV1
  9. html按钮的下拉菜单,按钮下拉菜单
  10. XmlDocument,XDocument相互转换
  11. 09、win32 转换为 store app
  12. 配置IP Phone在CUCME路由器上注册
  13. 社工库mysql_社工库源码大全(转载)
  14. GB28181协议--GB28181协议简介
  15. Android 开发,你遇上 Emoji 头疼吗?
  16. 如何将HTML与win10桌面壁纸,如何在Windows 10中将页面设置为桌面背景 | MOS86
  17. STM32用ST-LINK V2-1烧录后,不会自动重启执行的解决办法
  18. 无线网络安全——1、WiFi安全基础知识
  19. java校验特殊字符_java 中文及特殊字符校验
  20. 中国人不骗中国人,我的猜拳平平无奇。。

热门文章

  1. 电瓶车续航测试软件,【电驹视频】实测13款电动车真实续航,最靠谱的竟然是它……...
  2. 电脑太慢了最简单的办法怎么弄_最简单快速的方法恢复电脑误删文件-数据恢复常见问题...
  3. 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
  4. c语言进度条窗口,【C语言】进度条实现
  5. LitJson不支持float
  6. STL标准模版库----queue/deque操作大全
  7. Markdown语言调整图片居中、大小
  8. 在APP中结束第三方应用程序进程,kill第三方进程的方法
  9. Spring源码之创建AOP代理
  10. vue中遇到的问题:Error: Cannot find module 'chalk'