競賽總分(動態規劃)

2021-07-11 02:00:05 字數 1298 閱讀 5636

description

學生在我們usaco的競賽中的得分越多我們越高興。我們試著設計我們的競賽以便人們能盡可能的多得分。現在要進行一次競賽,總時間t固定,有若干型別可選擇的題目,每種型別題目可選入的數量不限,每種型別題目有乙個si(解答此題所得的分數)和ti(解答此題所需的時間),現要選擇若干題目,使解這些題的總時間在t以內的前提下,所得的總分最大。 

輸入包括競賽的時間,m(1 <= m <= 10000)和題目型別數目n(1 <= n <= 10000)。 

後面的每一行將包括兩個整數來描述一種"題型": 

第乙個整數說明解決這種題目能得的分數(1 <= points <= 10000),第二整數說明解決這種題目所需的時間(1 <= minutes <= 10000)。

input

第 1 行: 兩個整數:競賽的時間m和題目型別數目n。 第 2-n+1 行: 兩個整數:每種型別題目的分數和耗時。

output

單獨的一行,在給定固定時間裡得到的最大的分數。

sample input

300 4 

100 60 

250 120 

120 100 

35 20

sample output

605

解題思路:

這其實就是乙個完全揹包。

f[j]表示前i種物品在容量為j的揹包裡的最大價值,狀態轉移方程為:

f[i,j]=max

(1<=i<=n,w[i]<=j<=m)

max即為所求。

時間複雜度:

o(nm)

程式:var

m,n,w,u,i,j:longint;

f:array[0..100000]of longint;

begin

readln(m,n);

for i:=1 to n do

begin

readln(w,u);

for j:=u to m do

if f[j-u]+w>f[j] then f[j]:=f[j-u]+w;

end;

for j:=1 to m do

if f[j]>f[0] then f[0]:=f[j];

writeln(f[0]);

end.

版權屬於: chris

XYNUOJ 競賽總分

時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 9 提交 狀態 討論版 學生在我們usaco的競賽中的得分越多我們越高興。我們試著設計我們的競賽以便人們能盡可能的多得分,這需要你的幫助。我們可以從幾個種類中選取競賽的題目,這裡的乙個 種類 是指乙個競賽題目的集合,解決集合中的題目需要...

SSL 2305 競賽總分

description 學生在我們usaco的競賽中的得分越多我們越高興。我們試著設計我們的競賽以便人們能盡可能的多得分。現在要進行一次競賽,總時間t固定,有若干型別可選擇的題目,每種型別題目可選入的數量不限,每種型別題目有乙個si 解答此題所得的分數 和ti 解答此題所需的時間 現要選擇若干題目,...

USACO3 1 2 總分 揹包問題動態規劃

完全揹包問題。f i j 表示用前j個物品,放滿i的空間,能取得最大價值。f i j max f i a p j 1 b p j按順序用的話,陣列第二維可以壓掉。即為f i max f i a p b p executing.test 1 test ok 0.008 secs,3484 kb tes...