#91-【填满型背包dp】买稻草

版权声明:反正也没有人会转,下一个 https://blog.csdn.net/drtlstf/article/details/82356447

Description

农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面。在奶牛断粮之前,john拉着他的马车到农民Don的农场中买一些稻草给奶牛过冬。已知john的马车可以装的下C(1 <= C <=50,000)立方的稻草。
农民Don有H(1 <= H <= 5,000)捆体积不同的稻草可供购买,每一捆稻草有它自己的体积(1 <= V_i <= C)。面对这些稻草john认真的计算如何充分利用马车的空间购买尽量多的稻草给他的奶牛过冬。
现在给定马车的最大容积C和每一捆稻草的体积Vi,john如何在不超过马车最大容积的情况下买到最大体积的稻草?他不可以把一捆稻草分开来买。

Input

第一行两个整数,分别为C和H
第2..H+1行:每一行一个整数代表第i捆稻草的体积Vi

Output

一个整数,为john能买到的稻草的体积。

Sample Input

7 3
2
6
5

Sample Output

7

水型背包dp

澳大利亚蟑螂......倒吸凉气

#include <iostream>

#define SIZE 100001

using namespace std;

int dp[SIZE];

int main(int argc, char** argv)
{
	int t, n, c, i;
	
	scanf("%d%d", &t, &n);
	while (n--)
	{
		scanf("%d", &c);
		for (i = t; i >= c; --i) // 填满型背包dp模板
		{
			dp[i] = max(dp[i], c + dp[i-c]);
		}
	}
	
	printf("%d", dp[t]);
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/drtlstf/article/details/82356447