zoukankan      html  css  js  c++  java
  • HDU1114+完全背包

    完全:

    题意:给定E,F,分别表示空的存钱罐的重量和装了钱之后的重量。

    给定n种money的价值和重量

    dp[ i ][ j ]:表示从前 i 种money中选出某些,使得重量至少为 j 得到的最大价值。

    View Code
     1 /*
     2 完全背包 变形
     3 */
     4 #include<stdio.h>
     5 #include<stdlib.h>
     6 #include<string.h>
     7 #include<iostream>
     8 #include<algorithm>
     9 #include<queue>
    10 #include<map>
    11 #include<math.h>
    12 using namespace std;
    13 const int maxn = 10005;
    14 const int inf = 99999999;
    15 int main(){
    16     int T;
    17     scanf("%d",&T);
    18     while( T-- ){
    19         int E,F;
    20         scanf("%d%d",&E,&F);
    21         int sum=0;
    22         int dp[ maxn ];
    23         int w[ maxn ],val[ maxn ];
    24         int n;
    25         scanf("%d",&n);
    26         for( int i=0;i<n;i++ ) {
    27             scanf("%d%d",&val[ i ],&w[ i ]);
    28             sum+=val[ i ];
    29         }
    30         for( int i=0;i<maxn ;i++ ) dp[ i ]=inf;
    31         dp[ 0 ]=0;
    32         for( int i=0;i<n;i++ ){
    33             for( int j=w[i];j<=(F-E);j++ ){
    34                 dp[j]=min(dp[j],dp[j-w[i]]+val[i]);
    35             }
    36         }
    37         //for( int i=50;i<105;i++ ) printf("dp[%d]:%d\n",i,dp[i]);
    38         if( dp[ F-E ]!=inf ) printf("The minimum amount of money in the piggy-bank is %d.\n",dp[F-E]);
    39         else printf("This is impossible.\n");
    40     }
    41     return 0;
    42 }
    43         
    44     
    keep moving...
  • 相关阅读:
    leetcode 18 4Sum
    leetcode 71 Simplify Path
    leetcode 10 Regular Expression Matching
    leetcode 30 Substring with Concatenation of All Words
    leetcode 355 Design Twitte
    leetcode LRU Cache
    leetcode 3Sum
    leetcode Letter Combinations of a Phone Number
    leetcode Remove Nth Node From End of List
    leetcode Valid Parentheses
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2818576.html
Copyright © 2011-2022 走看看