题目概述
给定时间t,草药数n,采每组草药所需的时间a[i]和该组草药的价值b[i],求在给定的时间内能采到的草药的最大价值。每种草药可以无限采。
n<=10000,且n*t<10^7
解题思路
我们知道,对于这类背包问题,时间复杂度为(n*t)在题目所给的范围内不会超时,方法与01背包一致,不过扫描的顺序相反。
时间复杂度:O(n*t)
空间复杂度:O(t)
源程序
var
a:array[0..100002]of longint;
i,n,j,x,y,t:longint;
begin
readln(t,n);
for i:=1 to n do
begin
readln(x,y);
for j:=t-x downto 0 do
if a[j+x]+y>a[j] then a[j]:=a[j+x]+y;
end;
write(a[0]);
end.
本文介绍了一种草药采集问题的解决方法,该问题属于背包问题的一种变体。通过使用动态规划,文章详细阐述了如何在给定时间内最大化采集草药的价值,并提供了具体的实现代码。
266

被折叠的 条评论
为什么被折叠?



