zoukankan      html  css  js  c++  java
  • 带限制求最小价值的完全背包 HDU1114

     1 #include <iostream>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 
     6 int v[510];
     7 int w[510];
     8 int dp[10010];
     9 
    10 int main()
    11 {
    12     int t;
    13     cin>>t;
    14     while(t--)
    15     {
    16         int a,b;
    17         cin>>a>>b;
    18         int n;
    19         cin>>n;
    20         for(int i=0;i<n;i++)
    21         {
    22             cin>>v[i]>>w[i];
    23         }
    24         for(int i=1;i<=b-a;i++)
    25             dp[i]=99999999;
    26         dp[0]=0;
    27         for(int i=0;i<n;i++)
    28         {
    29             for(int j=w[i];j<=b-a;j++)
    30             {
    31                 dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
    32             }
    33         }
    34         if(dp[b-a]>=99999999)
    35             cout<<"This is impossible."<<endl;
    36         else
    37             cout<<"The minimum amount of money in the piggy-bank is "<<dp[b-a]<<"."<<endl;
    38     }
    39     return 0;
    40 }
    View Code

    重点是初值的设定,初值为负则该位置为不合法,只有从合法位置上获得的数据才是合法的

  • 相关阅读:
    bzoj 4610 Ceiling Functi
    uva 01350
    uva 12075
    uva 01393
    uva 11038
    CF 496E
    CF 496D
    poj 3167
    hdu 4622
    spoj 7258
  • 原文地址:https://www.cnblogs.com/wsruning/p/4668927.html
Copyright © 2011-2022 走看看