動歸 多人揹包

2021-08-04 03:57:51 字數 650 閱讀 5058

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

輸入格式:

第一行三個數k、v、n

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

輸出格式:

前k優解的價值和

題解:這道題目是在01揹包的基礎上求出前k個最優解。

dp[i][j]: 揹包容量為i,第j優解的值。

由於任意兩個揹包不能完全相同,所以只初始化dp[0][1]=0;

因為要求必須恰好裝滿,所以其他的初始化為最小。

dp[i][1....k]=max(dp[i][1..k],dp[i-w][1...k]+v);

即dp[i][1....k]中的k個元素為dp[i][1..k]中的k個元素+dp[i-w][1...k]中的k個元素的前k大的元素。

合併兩個陣列的時候利用歸併排序的原理合併。

#include

int f[5001][51];

intmain

()

} }

ans = 0;

for(i = 1; i <= k; ++i)

ans += f[v][i];

printf("%d\n", ans);

return

0;

}

多人揹包問題

爆了。而且是這種半年前刷過的題目。演算法是合併兩個有序的序列,其他的方程之類與單人揹包其實差不多。code include include include include define swap a,b,t define max a,b define min a,b define maxk 55 d...

題目 多人揹包

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

動歸 0 1揹包與完全揹包(洛谷P1048 採藥)

貪心與揹包的不同 題目描述 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段...