洛谷 P1858 多人揹包 DP

2022-07-16 22:09:21 字數 862 閱讀 1228

目錄輸入輸出樣例

說明思路

ac**

洛谷 p1858 多人揹包

求01揹包前k優解的價值和

第一行三個數 $ k,v,n $

接下來每行兩個數,表示體積和價值

前 $ k $ 優解的價值和

2 10 5

3 12

7 20

2 45 6

1 1

57
對於100%的資料, $ k \leq 50,v \leq 5000,n \leq 200 $

【時空限制】

1000ms,128mb

求k優解。可以考慮開二維陣列f[v][k],表示裝v體積物品的第k優解

加入每一件物品時,就要更新f[v]到f[v[i]]的值。對於新的f[v],應該是當前的f[v]與f[v-v[i]]+w[i]合併後的序列,取其中前k優就好了

#includeconst int maxk=60;

const int maxn=210;

const int maxv=5010;

using namespace std;

int k,v,n;

int v[maxn],w[maxn];

int f[maxv][maxk];

int ans;

int main()

for(int t=1;t<=k;t++) f[j][t]=tmp[t];}}

for(int t=1;t<=k;t++) ans+=f[v][t];

printf("%d",ans);

return 0;

}

洛谷P1858 多人揹包

題目鏈結 dd 和好朋友們要去爬山啦!他們一共有 k 個人,每個人都會背乙個包。這些包的容量是相同的,都是 v 可以裝進揹包裡的一共有 n 種物品,每種物品都有給定的體積和價值。在 dd 看來,合理的揹包安排方案是這樣的 每個人揹包裡裝的物品的總體積恰等於包的容量。每個包裡的每種物品最多只有一件,但...

P1858 多人揹包

求01揹包前k優解的價值和 輸入格式 第一行三個數k v n 接下來每行兩個數,表示體積和價值 輸出格式 前k優解的價值和 輸入樣例 1 2 10 5 3 12 7 20 2 45 6 1 1 輸出樣例 1 57 對於100 的資料,k 50,v 5000,n 200 solution 本題由於需要...

P1858 多人揹包

01揹包的前 k 優解 我們先考慮一下最平凡的01揹包問題是如何進行求解的,一維狀態下 f j max f j f j w i v i 有第k優解的限制怎麼辦,不妨加乙個維度,把動態規劃的轉移想象成圖中點與點之間 的移動 f j k 表示裝滿體積為 j 的揹包的第 k 優解 我們發現,最優解的數值是...