zoukankan      html  css  js  c++  java
  • uva11485 Extreme Discrete Summation(DP)

    首先那括号里的一坨是所有数的小数部分相加取下整

    dp[x][y]表示前x个组成和为y的个数

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #define eps 1e-9
    #define ll long long
    using namespace std;
    int n;
    double v[110];
    ll dp[10][110];
    /*
    ll DP(int x,int value){
        if(x==0) return value==0;
        if(dp[x][value]!=-1) return dp[x][value];
        ll ret=0;
        for(int i=0;i<n;i++){
            if(value>=int(v[i]*10+eps)%10) ret+=DP(x-1,value-int(v[i]*10+eps)%10);
        }
        return dp[x][value]=ret;
    }
    */
    int main(){
        while(~scanf("%d",&n)&&n){
            //for(int i=0;i<n;i++) scanf("%lf",&v[i]);
            for(int i=1;i<=n;i++) scanf("%lf",&v[i]);
            /*ll ans=0;
            memset(dp,-1,sizeof dp);
            for(int i=0;i<=72;i++){
                ans+=DP(8,i)*(i/10);
            }
            printf("%lld
    ",ans);*/
            memset(dp,0,sizeof dp);
            dp[0][0]=1;
            for(int i=1;i<=8;i++){
                for(int j=1;j<=n;j++){
                    for(int k=0;k<=72;k++){
                        if(dp[i-1][k]){
                           dp[i][k+int(v[j]*10+eps)%10]+=dp[i-1][k];
                        }
                    }
                }
            }
            ll ans=0;
            for(int i=0;i<=72;i++){
                ans+=dp[8][i]*(i/10);
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    uva11485
  • 相关阅读:
    链式栈的C++实现
    Java面试之设计模式二
    前端资源
    Java面试之异常
    Java面试之序列化
    Java面试之重写(Override)与重载(Overload)
    项目视图展示
    Java面试之集合
    Java面试之SSH框架面试题集锦
    JDBC技术
  • 原文地址:https://www.cnblogs.com/wonderzy/p/3540720.html
Copyright © 2011-2022 走看看