• [HDU 3709] Balanced Number


    对于4139,支点为3,(4-2)*4+(3-2)*1+(2-2)*3+(1-2)*9=0

    dp[dep][sum][zzz]表示长度为dep,之前的权值为sum,支点为zzz的平衡数的个数

    枚举支点求值

    注意0的情况

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 ll dp[20][2000][20];
     5 int dig[20];
     6 ll dfs(int dep,int sum,int zzz,int flag){
     7     if(!dep)return !sum;
     8     if(sum<0)return 0;
     9     if(!flag&&dp[dep][sum][zzz]!=-1)return dp[dep][sum][zzz];
    10     int lim=flag?dig[dep]:9;
    11     ll ans=0;
    12     for(int i=0;i<=lim;i++)
    13         ans+=dfs(dep-1,sum+(dep-zzz)*i,zzz,flag&(i==lim));
    14     if(!flag)dp[dep][sum][zzz]=ans;
    15     return ans;
    16 }
    17 ll solve(ll x){
    18     int dd=0;
    19     while(x)dig[++dd]=x%10,x/=10;
    20     ll ans=0;
    21     for(int i=dd;i;i--)ans+=dfs(dd,0,i,1);
    22     return ans-dd+1;//0满足所有,但只算一次
    23 }
    24 int main(){
    25     memset(dp,-1,sizeof(dp));
    26     int T;
    27     scanf("%d",&T);
    28     while(T--){
    29         ll A,B;
    30         scanf("%lld%lld",&A,&B);
    31         printf("%lld
    ",solve(B)-solve(A-1));
    32     }
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    javascript中获取dom元素高度和宽度
    $.ajax()方法详解
    JQ中$(window).load和$(document).ready区别与执行顺序
    第几个幸运数
    乘积尾零
    星期一
    分数
    卡片换位
    冰雹数
    打印方格
  • 原文地址:https://www.cnblogs.com/Ngshily/p/5485525.html
Copyright © 2020-2023  润新知