zoukankan      html  css  js  c++  java
  • [BZOJ] 1618: [Usaco2008 Nov]Buying Hay 购买干草

    1618: [Usaco2008 Nov]Buying Hay 购买干草

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 1216  Solved: 633
    [Submit][Status][Discuss]

    Description

    约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草,他知道N(1≤N≤100)个干草公司,现在用1到
    N给它们编号。第i个公司卖的干草包重量为Pi(1≤Pi≤5000)磅,需要的开销为Ci(l≤Ci≤5000)美元.每个干草公
    司的货源都十分充足,可以卖出无限多的干草包.    帮助约翰找到最小的开销来满足需要,即采购到至少H磅干草

    Input

    第1行输入N和H,之后N行每行输入一个Pi和Ci.

    Output

    最小的开销.

    Sample Input

    2 15
    3 2
    5 3

    Sample Output

    9
    FJ can buy three packages from the second supplier for a total cost of 9.

    HINT

     

    Source

    Silver

     

    Analysis

    笑死,自从遇见贪心,什么都想贪心=w=

    主要解法:完全背包DP

    Code

     1 #include<cstdio>
     2 #include<iostream>
     3 #define maxn 1000000
     4 using namespace std;
     5 
     6 int DP[maxn],n,h,w[maxn],v[maxn],inf = 0x3f3f3f3f;
     7 
     8 int main(){
     9     scanf("%d%d",&n,&h);
    10     
    11     for(int i = 1;i <= n;i++){
    12         scanf("%d%d",&v[i],&w[i]);
    13     }
    14     
    15     for(int i = 1;i <= h;i++){
    16         DP[i] = inf;
    17     } 
    18     
    19     for(int i = 1;i <= n;i++){
    20         for(int j = 1;j <= h;j++){
    21             if(v[i] >= j) DP[j] = min(DP[j],w[i]);
    22             else DP[j] = min(DP[j],DP[j-v[i]]+w[i]);
    23         }
    24     }
    25     
    26     printf("%d",DP[h]);
    27     
    28     return 0;
    29 }
    发现自己的贪心策略出错=w=此处完全背包
    转载请注明出处 -- 如有意见欢迎评论
  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/Chorolop/p/7468184.html
Copyright © 2011-2022 走看看