数位DP随便搞搞.

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<ctime>
  7. #include<string>
  8. #include<iomanip>
  9. #include<algorithm>
  10. #include<map>
  11. using namespace std;
  12. #define LL long long
  13. #define FILE "dealing"
  14. #define up(i,j,n) for(LL i=j;i<=n;++i)
  15. #define db double
  16. #define ull unsigned long long
  17. #define eps 1e-10
  18. #define pii pair<LL,LL>
  19. LL read(){
  20. LL x=0,f=1,ch=getchar();
  21. while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
  22. while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
  23. return f*x;
  24. }
  25. const LL maxn=102,maxm=20000,mod=10000007,inf=(LL)(2e9);
  26. template<class T>bool cmax(T& a,T b){return a<b?a=b,true:false;}
  27. template<class T>bool cmin(T& a,T b){return a>b?a=b,true:false;}
  28. template<class T>T min(T& a,T& b){return a<b?a:b;}
  29. template<class T>T max(T& a,T& b){return a>b?a:b;}
  30. LL a,b,w[20],r[20],cnt[maxn],f[20][20],p,mi[maxn],g[maxn][maxn],sum[maxn];
  31. LL s[20];
  32. void dfs(LL pos,bool flag){
  33. if(pos==-1)return;
  34. if(!flag){
  35. for(LL i=1;i<=9;i++)cnt[i]+=p*(f[pos][i]+mi[pos]*s[i]);
  36. cnt[0]+=p*(f[pos][0]+s[0]*mi[pos]);
  37. return;
  38. }
  39. for(LL i=0;i<=w[pos];i++){
  40. bool flg=0;
  41. for(LL j=1;j<10;j++)if(s[j]){flg=1;break;}
  42. if(flg||i)s[i]++;
  43. dfs(pos-1,w[pos]==i);
  44. if(flg||i)s[i]--;
  45. }
  46. }
  47. int main(){
  48. freopen(FILE".in","r",stdin);
  49. freopen(FILE".out","w",stdout);
  50. a=read(),b=read()+1;
  51. mi[0]=1;for(LL i=1;i<=14;i++)mi[i]=mi[i-1]*10;
  52. for(LL i=1;i<=14;i++){
  53. for(LL j=0;j<=9;j++){
  54. f[i][j]=f[i-1][j]*10+mi[i-1];
  55. }
  56. }
  57. w[0]=0;
  58. while(b){
  59. w[++w[0]]=b%10;
  60. b/=10;
  61. }
  62. memset(s,0,sizeof(s));
  63. p=1;dfs(w[0],1);
  64. up(i,1,w[0]-1)cnt[0]-=mi[i-1];
  65. LL Max=w[0];
  66. memset(w,0,sizeof(w));
  67. while(a){
  68. w[++w[0]]=a%10;
  69. a/=10;
  70. }
  71. memset(s,0,sizeof(s));
  72. up(i,1,w[0]-1)cnt[0]+=mi[i-1];
  73. w[0]=Max;
  74. p=-1;dfs(Max,1);
  75. up(i,0,8)printf("%lld ",cnt[i]);printf("%lld\n",cnt[9]);
  76. return 0;
  77. }

  

BZOJ1833 数位DP的更多相关文章

  1. 数位DP入门:(bzoj1833+3209)

    //我是来看文章创建时间的= = 膜拜了一下蔡大神.... 人生第一道自己写的数位DP...好吧以前是看题解然后也不知道为什么就过了的>_< 虽然说现在还是只会裸题= = 数位DP介绍: ...

  2. bzoj1833: [ZJOI2010]count 数字计数 数位dp

    bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...

  3. BZOJ1833 ZJOI2010 count 数字计数 【数位DP】

    BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...

  4. 【BZOJ-1833】count数字计数 数位DP

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 2494  Solved: 1101[Submit][ ...

  5. [bzoj1833][ZJOI2010]count 数字计数——数位dp

    题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...

  6. 【BZOJ1833】[ZJOI2010] count 数字计数(数位DP)

    点此看题面 大致题意: 求在给定的两个正整数\(a\)和\(b\)中的所有整数中,\(0\sim9\)各出现了多少次. 数位\(DP\) 很显然,这是一道数位\(DP\)题. 我们可以用前缀和的思想, ...

  7. 【数位dp】bzoj1833: [ZJOI2010]count 数字计数

    数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...

  8. BZOJ1833 [ZJOI2010]count 数字计数 【数学 Or 数位dp】

    题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式 输出文件中包含一行10个整数, ...

  9. BZOJ1833(数位dp)

    这个数位dp倒是没什么限制条件,只是需要在过程中把每个数字出现次数记录一下即可.记忆化返回时数学算出.框架还是套板子. #include <cstdio> #include <cma ...

随机推荐

  1. Qt编程简介与基本知识

    1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...

  2. [转]Windows10内置Linux子系统初体验

    Windows10内置Linux子系统初体验 https://www.jianshu.com/p/bc38ed12da1d

  3. 【VBS】使用Visual Studio调试VBS程序

    首先要确保机器上安装了Visual Stuido, 然后打开命令行窗口执行如下命令,会弹出是否使用Visual Studio进行调试的确认窗口. 点[是]进行调试. WScript.exe [vbs文 ...

  4. hibernate uuid

  5. 重读金典------高质量C编程指南(林锐)-------第七章 内存管理

    2015/12/10补充: 当我们需要给一个数组返回所赋的值的时候,我们需要传入指针的指针.当我们只需要一个值的时候,传入指针即可,或者引用也可以. 结构大致如下: char* p = (char*) ...

  6. PropertiesTest

    import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public clas ...

  7. VueJS事件处理器v-on

    事件监听可以使用 v-on 指令. v-on:click表达式 HTML: <!DOCTYPE html> <html> <head> <meta chars ...

  8. typedef,结构体,共用体,联合体

    typedef的用途: 封装数据类型,方便移植 简化函数指针的定义 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/ ...

  9. linux init->upstart->systemd

    http://en.wikipedia.org/wiki/Init init From Wikipedia, the free encyclopedia     This article is abo ...

  10. java面试笔记(2019)

    1. 堆啊,栈啊,内存溢出原因 2. Dubbo原理 3. Reids线程 4. 线程池安全 5. linux查看线程命令 6. ABA