#29254: 解法二


SUNGOD (黑龍炎使.煞氣ㄟSUNGOD)

學校 : 國立交通大學
編號 : 95834
來源 : [140.113.213.76]
最後登入時間 :
2023-09-25 22:02:42
d682. TOI2010 第三題:職棒簽約問題 -- 2010TOI研習營初選 | From: [123.240.145.218] | 發表日期 : 2022-02-09 14:34

還是DP

令DP[i][j]表示看完j個位子情況下要到戰力i最少要多少錢,則題目就會變成求DP[0-5000][N]中花費少於M的max(i)

注意:因為題目規定每人的最大戰力是100,且最多也只能選50個,所以100*50=5000是這樣來的

初始化:

DP[0][0] = 0 // 看完0個位子,你有0點戰力,而且肯定沒花到錢

other DP[i][j] = NAN // 你沒有選手能選,再多錢也得不到這些戰力

設(選手的金額為v,戰力為w)

轉移式:當DP[i][j]<=M,則 DP[i+w][j+1] = min(DP[i+w][j],min(DP[i+w][j+1],DP[i][j]+v));

令S = N堆中最大戰力總和 

複雜度:時間O(N*P*S)//4ms->比按照錢DP(M<=10000,S<=5000)大概快一點?,空間O(S*N)

 

狀態壓縮:一樣O(S*N)變成O(S)。

 
ZeroJudge Forum