bzoj 1618: [Usaco2008 Nov]Buying Hay 购买干草(完全背包)

来源:互联网 发布:jenkins python pdf 编辑:程序博客网 时间:2024/05/29 04:51

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

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 1196  Solved: 622
[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


一眼看过去还以为是bzoj 1606,结果发现只是题目名字一样而已

完全背包,注意细节就好

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define LL long longtypedef struct{LL p;LL val;}Res;Res s[105];LL dp[55005];int main(void){LL n, V, i, j, ans;while(scanf("%lld%lld", &n, &V)!=EOF){for(i=1;i<=n;i++)scanf("%lld%lld", &s[i].val, &s[i].p);memset(dp, 61, sizeof(dp));dp[0] = 0;for(i=1;i<=n;i++){for(j=s[i].val;j<=V+5000;j++)dp[j] = min(dp[j], dp[j-s[i].val]+s[i].p);}ans = 1ll<<50;for(i=V;i<=V+5000;i++)ans = min(ans, dp[i]);printf("%lld\n", ans);}return 0;}


阅读全文
1 0
原创粉丝点击