目錄輸入輸出樣例
說明思路
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 優解 我們發現,最優解的數值是...