zoukankan      html  css  js  c++  java
  • 【HDOJ】【3709】Balanced Bumber

    数位DP


    题解:http://www.cnblogs.com/algorithms/archive/2012/09/02/2667637.html

     

    dfs的地方没太看懂……(也就那里是重点吧喂!)挖个坑……回头再看看

     1 //HDOJ 3709
     2 #include<cmath>
     3 #include<vector>
     4 #include<cstdio>
     5 #include<cstring>
     6 #include<cstdlib>
     7 #include<iostream>
     8 #include<algorithm>
     9 #define rep(i,n) for(int i=0;i<n;++i)
    10 #define F(i,j,n) for(int i=j;i<=n;++i)
    11 #define D(i,j,n) for(int i=j;i>=n;--i)
    12 #define pb push_back
    13 using namespace std;
    14 int getint(){
    15     int v=0,sign=1; char ch=getchar();
    16     while(ch<'0'||ch>'9'){ if (ch=='-') sign=-1; ch=getchar();}
    17     while(ch>='0'&&ch<='9'){ v=v*10+ch-'0'; ch=getchar();}
    18     return v*=sign;
    19 }
    20 const int N=20,M=1400;
    21 typedef long long LL;
    22 /******************tamplate*********************/
    23 
    24 LL dp[N][N][M];
    25 int bit[N];
    26 LL dfs(int pos,int o,int sum,int f){
    27     if (sum<0) return 0;
    28     if (pos==0) return sum==0;
    29     if (!f && dp[pos][o][sum]!=-1) return dp[pos][o][sum];
    30 
    31     LL ret=0;
    32     int max=f ? bit[pos] : 9;
    33     F(i,0,max)
    34         ret+=dfs(pos-1,o,sum+(pos-o)*i,f && i==max);
    35     if (!f) dp[pos][o][sum]=ret;
    36     return ret;
    37 }
    38 
    39 LL cal(LL n){
    40     int len=0;
    41     for(;n;n/=10) bit[++len]=n%10;
    42     LL ret=0;
    43     F(o,1,len)
    44         ret+=dfs(len,o,0,1);
    45     return ret-len+1;
    46 }
    47 int main(){
    48 #ifndef ONLINE_JUDGE
    49     freopen("3709.in","r",stdin);
    50     freopen("3709.out","w",stdout);
    51 #endif
    52     memset(dp,-1,sizeof dp);
    53     int T=getint();
    54     while(T--){
    55         LL x,y;
    56         cin >> x >> y;
    57         cout << cal(y)-cal(x-1)<<endl;
    58     }
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    还能这样偷懒?用Python实现网站自动签到脚本
    普通爬虫 VS 多线程爬虫!Python爬虫运行时间对比
    中文文献阅读方法及笔记模板
    约束
    可迭代对象补充
    练习题及补充
    内置函数的补充/super/异常值处理
    特殊成员
    嵌套
    面向对象知识点总结补充
  • 原文地址:https://www.cnblogs.com/Tunix/p/4307722.html
Copyright © 2011-2022 走看看