• BZOJ_1618_ [Usaco2008_Nov]_Buying_Hay_购买干草(动态规划,完全背包)


    描述


    http://www.lydsy.com/JudgeOnline/problem.php?id=1618

    有n种物品,每种物品有价值和重量,可以无限拿.现在要满足价值之和大于等于h,问最小重量.

    分析


    完全背包,模板是给定重量求价值最大,这道题是给定价值求重量最小.其实差不多的.

    p.s.大概我只能做出来这种水题了.

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int N=100+5,W=50000+5,INF=0x3fffffff;
     5 int n,h;
     6 int dp[W],w[N],v[N];
     7 inline void read(int &ret){
     8     ret=0; int k=1; char c;
     9     for(c=getchar();c<'0'||c>'9';c=getchar())if(c=='-') k=-1;
    10     for(;c>='0'&&c<='9';c=getchar()) ret=ret*10+c-'0';
    11     ret*=k;
    12 }
    13 int main(){
    14     read(n); read(h);
    15     for(int i=1;i<=n;i++) read(v[i]), read(w[i]);
    16     for(int i=1;i<=h;i++) dp[i]=INF;
    17     for(int i=1;i<=n;i++)for(int j=1;j<=h;j++){
    18         if(v[i]>=j) dp[j]=min(dp[j],w[i]);
    19         else dp[j]=min(dp[j],dp[j-v[i]]+w[i]);
    20     }
    21     printf("%d
    ",dp[h]);
    22     return 0;
    23 }
    View Code

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

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 950  Solved: 488
    [Submit][Status][Discuss]

    Description

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

    Input

        第1行输入N和日,之后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

  • 相关阅读:
    第十二讲 Web 服务的创建和使用
    第十七讲 ASP.NET安全性
    第九讲 水晶报表的使用
    第十五讲 数据集的使用方法和技巧
    第十六讲 调试和跟踪ASP.NET应用程序
    第十讲 ASP.NET程序的部署
    第十四讲 ADO.NET数据操作
    第十八讲 Web服务器控件使用
    【笔记】java多线程 2 五种状态
    【笔记】数据库模式
  • 原文地址:https://www.cnblogs.com/Sunnie69/p/5550531.html
Copyright © 2020-2023  润新知