• BZOJ1833 数位DP


    数位DP随便搞搞.

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<ctime>
    #include<string>
    #include<iomanip>
    #include<algorithm>
    #include<map>
    using namespace std;
    #define LL long long
    #define FILE "dealing"
    #define up(i,j,n) for(LL i=j;i<=n;++i)
    #define db double
    #define ull unsigned long long
    #define eps 1e-10
    #define pii pair<LL,LL>
    LL read(){
    	LL x=0,f=1,ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
    	return f*x;
    }
    const LL maxn=102,maxm=20000,mod=10000007,inf=(LL)(2e9);
    template<class T>bool cmax(T& a,T b){return a<b?a=b,true:false;}
    template<class T>bool cmin(T& a,T b){return a>b?a=b,true:false;}
    template<class T>T min(T& a,T& b){return a<b?a:b;}
    template<class T>T max(T& a,T& b){return a>b?a:b;}
    LL a,b,w[20],r[20],cnt[maxn],f[20][20],p,mi[maxn],g[maxn][maxn],sum[maxn];
    LL s[20];
    void dfs(LL pos,bool flag){
    	if(pos==-1)return;
    	if(!flag){
    		for(LL i=1;i<=9;i++)cnt[i]+=p*(f[pos][i]+mi[pos]*s[i]);
    		cnt[0]+=p*(f[pos][0]+s[0]*mi[pos]);
    		return;
    	}
    	for(LL i=0;i<=w[pos];i++){
    		bool flg=0;
    		for(LL j=1;j<10;j++)if(s[j]){flg=1;break;}
    		if(flg||i)s[i]++;
    		dfs(pos-1,w[pos]==i);
    		if(flg||i)s[i]--;
    	}
    }
    int main(){
    	freopen(FILE".in","r",stdin);
    	freopen(FILE".out","w",stdout);
    	a=read(),b=read()+1;
    	mi[0]=1;for(LL i=1;i<=14;i++)mi[i]=mi[i-1]*10;
    	for(LL i=1;i<=14;i++){
    		for(LL j=0;j<=9;j++){
    			f[i][j]=f[i-1][j]*10+mi[i-1];
    		}
    	}
    	w[0]=0;
    	while(b){
    		w[++w[0]]=b%10;
    		b/=10;
    	}
    	memset(s,0,sizeof(s));
    	p=1;dfs(w[0],1);
    	up(i,1,w[0]-1)cnt[0]-=mi[i-1];
    	LL Max=w[0];
    	memset(w,0,sizeof(w));
    	while(a){
    		w[++w[0]]=a%10;
    		a/=10;
    	}
    	memset(s,0,sizeof(s));
    	up(i,1,w[0]-1)cnt[0]+=mi[i-1];
    	w[0]=Max;
    	p=-1;dfs(Max,1);
    	up(i,0,8)printf("%lld ",cnt[i]);printf("%lld
    ",cnt[9]);
    	return 0;
    }
    

      

  • 相关阅读:
    maven 利用 profile 进行多环境配置
    基于 TrueLicense 的项目证书验证
    SpringMVC 自定义参数解析器.
    Spring MVC -- 基于注解的控制器
    Spring MVC -- Spring MVC入门
    Spring MVC -- MVC设计模式(演示4个基于MVC框架的案例)
    Spring MVC -- Spring框架入门(IoC、DI以及XML配置文件)
    Servlet2.5版本和Servlet3.0版本
    Java基础 -- 深入理解泛型
    Java基础 -- 深入理解Java类型信息(Class对象)与反射机制
  • 原文地址:https://www.cnblogs.com/chadinblog/p/6534578.html
Copyright © 2020-2023  润新知