zoukankan      html  css  js  c++  java
  • 背包问题POJ 1252 Euro Efficiency【完全背包】


    POJ 1252 Euro Efficiency
    大意:六种货币,面值都小于100。用这六种货币(可加可减)
    用最少的货币数组成1到100。求出这1到100中最大的,并求平均值。
    两个完全背包即可,一个付钱,一个找钱



    #include<stdio.h>
    #include<string.h>
    const int N = 10000+100+2;
    int dp[N];
    int a[6];
    int min(int a,int b)
    {
     if(a==-1)return b;
     return a<b?a:b;
    }
    int main()
    {
     int T;
     while(scanf("%d",&T)!=EOF)
     {
      while(T--){
      int i,j;
      int upper = 0;
      for(i=0;i<6;i++)
      {
       scanf("%d",&a[i]);
       if(upper<a[i])
        upper=a[i];
      }
      upper= upper*upper+100+1;
            memset(dp,-1,sizeof(dp));
      dp[0]=0;
      for(i=0;i<6;i++) //付钱
      {
       for(j=a[i];j<upper;j++)
       {
         if(dp[j-a[i]]!=-1)
                     dp[j]=min(dp[j],dp[j-a[i]]+1);
       }
    
      
      }
       
      for(i=0;i<6;i++)//找钱
      {
        for(j=upper-1-a[i];j>=0;j--)
        if(dp[a[i]+1]!=-1)
        dp[j]=min(dp[j],dp[j+a[i]]+1);
      }
    
    
      __int64 ans = 0;
      __int64 bigger = dp[1];
      for(i=1;i<=100;i++)
      {
       ans+=dp[i];
       if(dp[i]>bigger)bigger=dp[i];
      }
    
      printf("%.2lf %d\n",ans/100.0,bigger);
      }
     }
     return 0;
    }
    
  • 相关阅读:
    java的类继承(与c++对比)
    java的数据类型、自动拆装箱、字面量
    java中关键字static和final
    JVM之JIT
    java之JIT(Just in time)
    栈和堆
    C++中vector的使用
    canvas
    ajax笔记
    CSS笔记
  • 原文地址:https://www.cnblogs.com/AndreMouche/p/1954348.html
Copyright © 2011-2022 走看看