DP:
令DP[i][j]表示用i塊錢且看完j個位子的情況下所能得到的最大戰力,則題目就會變成求DP[0-m][N]的最大值
初始化:DP[0][0] = 0 // 看完0個位子,且用了0塊錢的情況下,你有0點戰力
轉移式:當DP[i][j]可到達,且i+v(那位選手的金額,戰力為w)<=M ,則 DP[i+v][j+1] = max(DP[i+v][j],max(DP[i+v][j+1],DP[i][j]+w));
複雜度:時間O(N*P*M)//5ms,空間O(M*N)
狀態壓縮:不難看出轉移式當中的DP[i][j]只和前項有關,所以可以把DP[M][N]簡化為DP[M][2],用覆蓋的方式往下推,這樣空間會從O(M*N)變成O(M)。