bzoj1833: [ZJOI2010]count 数字计数(数位dp)
学习了一波记忆化数位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)相关推荐
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- BZOJ 1833 ZJOI2010 count 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- bzoj1833: [ZJOI2010]count 数字计数USACO37 Cow Queueing 数数的梦(数位DP)
难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的--果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...
- [BZOJ1833][ZJOI2010]Count数字计数(DP)
数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...
- bzoj1833: [ZJOI2010]count 数字计数 codevs1359 数字计数
bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...
- 【ZJOI2010】数字计数 数位dp
比较直接的数位dp,但不是很好写 注: 1.每一位作为最高位的时候要统计 2.每一位一个周期的个数要统计 3.每一位作为不确定的最高位的个数要统计 4.统计分两部分:当前位和以后位 码: #inclu ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
- 1833: [ZJOI2010]count 数字计数
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2951 Solved: 1307 [Submit ...
- 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 数字计数
1833 思路:数位dp 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se seco ...
最新文章
- mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
- oracle导入dmp方法,oracle dmp文件导入方法
- VS可视化调试学习总结
- 【译】Privacy and machine learning: two unexpected allies
- cmake使用示例与整理总结
- 【剑指offer】面试题30:包含min函数的栈
- Python高级——正则表达式与re模块
- 交叉编译docker_端侧推理引擎Tengine初识:安卓平台交叉编译并跑通MobileNetV1
- html按钮的下拉菜单,按钮下拉菜单
- XmlDocument,XDocument相互转换
- 09、win32 转换为 store app
- 配置IP Phone在CUCME路由器上注册
- 社工库mysql_社工库源码大全(转载)
- GB28181协议--GB28181协议简介
- Android 开发,你遇上 Emoji 头疼吗?
- 如何将HTML与win10桌面壁纸,如何在Windows 10中将页面设置为桌面背景 | MOS86
- STM32用ST-LINK V2-1烧录后,不会自动重启执行的解决办法
- 无线网络安全——1、WiFi安全基础知识
- java校验特殊字符_java 中文及特殊字符校验
- 中国人不骗中国人,我的猜拳平平无奇。。
热门文章
- 电瓶车续航测试软件,【电驹视频】实测13款电动车真实续航,最靠谱的竟然是它……...
- 电脑太慢了最简单的办法怎么弄_最简单快速的方法恢复电脑误删文件-数据恢复常见问题...
- 写入sql时间_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深
- c语言进度条窗口,【C语言】进度条实现
- LitJson不支持float
- STL标准模版库----queue/deque操作大全
- Markdown语言调整图片居中、大小
- 在APP中结束第三方应用程序进程,kill第三方进程的方法
- Spring源码之创建AOP代理
- vue中遇到的问题:Error: Cannot find module 'chalk'