bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数
题目:传送门
题解:
今天是躲不开各种恶心DP了???
%爆靖大佬啊!!!
据说是数位DP裸题...emmm学吧学吧
感觉记忆化搜索特别强:
定义f[i][j][k]表示若前i个位置有k个j的此时的全局方案数,然后就可以记忆化搜索了(具体看代码吧)
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 typedef long long LL; 8 LL f[15][11][15],a[15]; 9 LL n,m; 10 LL dfs(int pos,int x,int sum,bool ld,bool lt)//ld表示当前情况是否要考虑前导0,lt表示的是枚举数字的上限是否有规定 11 { 12 if(pos==0)return sum; 13 if(ld==false && lt==false && f[pos][x][sum]!=-1)return f[pos][x][sum]; 14 LL up=9,ans=0;if(lt==true)up=a[pos]; 15 for(int i=0;i<=up;i++) 16 { 17 int ss=sum;bool bk1=false,bk2=false; 18 if(i==x)ss++; 19 if(ld==true && i==0){bk1=true;if(x==0)ss--;} 20 if(lt==true && i==a[pos])bk2=true; 21 ans+=dfs(pos-1,x,ss,bk1,bk2); 22 } 23 if(ld==false && lt==false)f[pos][x][sum]=ans; 24 return ans; 25 } 26 LL sol(LL x,int y) 27 { 28 int pos=0; 29 while(x){a[++pos]=x%10;x/=10;} 30 return dfs(pos,y,0,1,1); 31 } 32 int main() 33 { 34 memset(f,-1,sizeof(f)); 35 scanf("%lld%lld",&n,&m); 36 for(int i=0;i<9;i++)printf("%lld ",sol(m,i)-sol(n-1,i)); 37 printf("%lld\n",sol(m,9)-sol(n-1,9)); 38 return 0; 39 }
转载于:https://www.cnblogs.com/CHerish_OI/p/8807509.html
bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)相关推荐
- BZOJ 1833 ZJOI2010 count 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- 数位dp 记忆化搜索java_hdu 5787 数位dp,记忆化搜索
题意:求区间[l,r]内有多少个数符合,这个数的任意的相邻k位数(digits),这k个数都两两不相等 l,r范围是1~1e18,k是2~5 思路:数位DP,因为K<=5,我们最多需要保存下来当 ...
- UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)
题目:https://vjudge.net/problem/UVA-11361 思路:数位dp,用记忆化搜索写,dp[pos][i][j][limit] 代表剩余有pos位,每位上的数字和模k 等于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 ...
- HDU 4352 XHXJ's LIS(*数位DP 记忆化搜索 待整理)
XHXJ's LIS HDU - 4352 #define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then caref ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
最新文章
- 软件测试基础--笔记6
- 用c语言合并两个链表,合并两个链表.
- aaaaaaa……aaa(n个)%p的值 (矩阵快速幂)
- ASP.NET MVC学习资料 新增几个开源项目
- Java设计模式之代理模式(Proxy)
- 【1024】阿里开源项目汇总
- 服务器write后客户端响应,客户端解析服务器响应的multipart/form-data数据
- java工程中的.classpathaaaaaaaaaaaaaaaa转载
- DHL全球货运与第四范式达成合作
- oracle 给表空间改名,Oracle重命名表空间和删除表空间
- [导入]PropertyGrid代码示例(Ext1.x)
- java rsa padding_rsa加密--选择padding模式需要注意的问题。。。
- 基于Web的仓库管理系统的设计与实现
- 这8款Android桌面插件,这款 Android 应用,帮你优雅地管理桌面小部件
- 网络数据爬取实例教程
- python程序运行进程、使用时间、剩余时间显示
- JavaScript 原形链
- ETUDE HOUSE伊蒂之屋携手全新中国区品牌大使Justin黄明昊
- 【安卓wechat微信导出聊天记录】
- 简易android通讯录
热门文章
- python解码base64_在python中解码Base64 Gzip
- c++ list box 字体设置_上海印刷字体展示馆 迎来第一批团队参观
- 2的32次方减1用python,第二章python入门
- react追加html元素,React给添加元素增加样式
- 怎么看python程序卡在哪里_Python程序卡住了
- python public_【速记速学】Python类的定义,属性,方法,访问性
- linux终端使用python3,3 个 Python 命令行工具 | Linux 中国
- msp430编程用什么软件_UG编程是什么?ug编程做什么用的?
- %matplotlib inline 的作用
- Spark Streaming(二)Flume