[BZOJ1833][ZJOI2010]Count数字计数(DP)
数位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)相关推荐
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- 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出现次数一 ...
- 【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 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- BZOJ 1833: [ZJOI2010]count 数字计数
1833 思路:数位dp 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se seco ...
- 【ZJOI2010】数字计数 数位dp
比较直接的数位dp,但不是很好写 注: 1.每一位作为最高位的时候要统计 2.每一位一个周期的个数要统计 3.每一位作为不确定的最高位的个数要统计 4.统计分两部分:当前位和以后位 码: #inclu ...
最新文章
- java 字符流与字节流区别_JAVA 字符流与字节流的区别
- Nginx虚拟主机配置
- 阿尔法大蛋智能机器人功能_智能机器人怎么选?阿尔法蛋大蛋2.0助力孩子新学期...
- Linux/Unix环境下的make命令详解
- 如果你需要在 XHTML 中声明 DOCTYPE,必须使用到jsp:text动作元素
- gcc 中的__attribute__ ((packed)) gcc移植,内存对齐.结构体对齐-转
- .net Remoting(1)——起点,从示例做起
- [Python] random.uniform( ) 函数教程与实例解析
- jde 动态添加筛选条件的注意事项
- 2022-2028全球与中国质量管理体系软件市场现状及未来发展趋势
- Java架构师和大数据架构师的区别是什么?哪个更有发展前景?
- 临安推进智慧交通频频升级
- ajax传参后台中文乱码
- [nrf51][nrf52] nrfconnect 安装说明指南
- 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些
- 如何快速判断一个文件是否为病毒
- CGB2106-Day03
- 学校员工管理系统流程图以及项目源码(c++超详细)
- 双十二:2017这些活动不可错过
- TeamCity自动编译设置教程
热门文章
- 从阿里前端工程化中台实践,看中台建设的舍与得
- K8s 工程师必懂的 10 种 Ingress 控制器
- PS5独占游戏RETURNAL:华丽的黑暗电子声音是如何制作的(新 3D 音频引擎)下
- 5年,14款近满分神作,这个独立团队打造了他们的游戏宇宙
- 放置等于弃置?放置类游戏是否是市场下一个风口?
- 如何“漂亮”地解决dota类游戏网络延迟同步?
- 剑网三《谢云流传》,展现的庞大世界观,背后的故事如何?
- 前端性能优化-DNS解析优化
- 查看MongoDB索引的使用,管理索引
- Oracle约束的关键字Enable/Disable/Validate/Novalidate