华师一附中OI组
标题:
P2925 [USACO08DEC]干草出售Hay For Sale
[打印本页]
作者:
admin
时间:
2018-10-14 10:52
标题:
P2925 [USACO08DEC]干草出售Hay For Sale
https://www.luogu.org/problemnew/show/P2925
题目描述
农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面。在奶牛断粮之前,john拉着他的马车到农民Don的农场中买一些稻草给奶牛过冬。已知john的马车可以装的下C(1 <= C <=50,000)立方的稻草。
农民Don有H(1 <= H <= 5,000)捆体积不同的稻草可供购买,每一捆稻草有它自己的体积(1 <= V_i <= C)。面对这些稻草john认真的计算如何充分利用马车的空间购买尽量多的稻草给他的奶牛过冬。
现在给定马车的最大容积C和每一捆稻草的体积Vi,john如何在不超过马车最大容积的情况下买到最大体积的稻草?他不可以把一捆稻草分开来买。
输入输出格式
输入格式:
第一行两个整数,分别为C和H
第2..H+1行:每一行一个整数代表第i捆稻草的体积Vi
输出格式:
一个整数,为john能买到的稻草的体积。
输入输出样例
输入样例#1:
7 3
2
6
5
输出样例#1:
7
作者:
黄煦喆
时间:
2018-10-28 21:58
#include<iostream>
using namespace std;
int const maxc=50000+10;
int c,n,a[5001];
bool dp[maxc]= {1};
int main()
{
cin>>c>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
for(int j=c; j>=a[i]; j--)dp[j]=dp[j]||dp[j-a[i]];
}
int l=c;
while(!dp[l])l--;
cout<<l;
return 0;
}
复制代码
作者:
type尧
时间:
2018-11-4 18:50
//
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define maxh 10000
#define maxc 100000
using namespace std;
int h,c;
int v[maxh];
int f[maxc];
void read()
{
cin>>c>>h;
for(int i=1; i<=h; i++) cin>>v[i];
return;
}
void work()
{
read();
for(int i=1; i<=h; i++)
for(int j=c; j>=v[i]; j--) {
f[j]=max(f[j],f[j-v[i]]+v[i]);
if(f[j]==c) {
cout<<c;
return;
}
}
cout<<f[c];
return;
}
int main()
{
work();
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2