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+记忆化搜索)相关推荐

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

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

  2. 数位dp 记忆化搜索java_hdu 5787 数位dp,记忆化搜索

    题意:求区间[l,r]内有多少个数符合,这个数的任意的相邻k位数(digits),这k个数都两两不相等 l,r范围是1~1e18,k是2~5 思路:数位DP,因为K<=5,我们最多需要保存下来当 ...

  3. UVA - 11361 Investigating Div-Sum Property(数位dp/记忆化搜索板子)

    题目:https://vjudge.net/problem/UVA-11361 思路:数位dp,用记忆化搜索写,dp[pos][i][j][limit] 代表剩余有pos位,每位上的数字和模k 等于i ...

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

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

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

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

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

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

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

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

  8. 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 ...

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

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

最新文章

  1. 软件测试基础--笔记6
  2. 用c语言合并两个链表,合并两个链表.
  3. aaaaaaa……aaa(n个)%p的值 (矩阵快速幂)
  4. ASP.NET MVC学习资料 新增几个开源项目
  5. Java设计模式之代理模式(Proxy)
  6. 【1024】阿里开源项目汇总
  7. 服务器write后客户端响应,客户端解析服务器响应的multipart/form-data数据
  8. java工程中的.classpathaaaaaaaaaaaaaaaa转载
  9. DHL全球货运与第四范式达成合作
  10. oracle 给表空间改名,Oracle重命名表空间和删除表空间
  11. [导入]PropertyGrid代码示例(Ext1.x)
  12. java rsa padding_rsa加密--选择padding模式需要注意的问题。。。
  13. 基于Web的仓库管理系统的设计与实现
  14. 这8款Android桌面插件,这款 Android 应用,帮你优雅地管理桌面小部件
  15. 网络数据爬取实例教程
  16. python程序运行进程、使用时间、剩余时间显示
  17. JavaScript 原形链
  18. ETUDE HOUSE伊蒂之屋携手全新中国区品牌大使Justin黄明昊
  19. 【安卓wechat微信导出聊天记录】
  20. 简易android通讯录

热门文章

  1. python解码base64_在python中解码Base64 Gzip
  2. c++ list box 字体设置_上海印刷字体展示馆 迎来第一批团队参观
  3. 2的32次方减1用python,第二章python入门
  4. react追加html元素,React给添加元素增加样式
  5. 怎么看python程序卡在哪里_Python程序卡住了
  6. python public_【速记速学】Python类的定义,属性,方法,访问性
  7. linux终端使用python3,3 个 Python 命令行工具 | Linux 中国
  8. msp430编程用什么软件_UG编程是什么?ug编程做什么用的?
  9. %matplotlib inline 的作用
  10. Spark Streaming(二)Flume