求01揹包前k優解的價值和
第一行三個數\(k\)、\(v\)、\(n\)
接下來每行兩個數,表示體積和價值
前k優解的價值和
對於100%的資料,$ k\le 50,v\le 5000,n\le 200$
算是積累見識吧,有些型別的題不見過一面估計比較難想
方程為\(dp[i][j][k]\)代表前\(i\)中在裝了\(j\)時第\(k\)優值
如何轉移呢
對\(dp[i][j]\)來說,由\(dp[i-1][j]\)和\(dp[i-1][j-w]+c\)轉移
即我們從\(dp[i-1][j][1...k]\)和\(dp[i-1][j-w][1...k]+c\)中選出前\(k\)大的給\(dp[i][j][1...k]\)
用到了歸併排序的思想
code:
#include #include int max(int x,int y)
int min(int x,int y)
for(int l=1;l<=k;l++) dp[l][j]=tmp[l];}}
int ans=0;
for(int i=1;i<=k;i++)
ans+=dp[i][v];
printf("%d\n",ans);
return 0;
}
2018.7.13 洛谷P1858 多人揹包
題目鏈結 dd 和好朋友們要去爬山啦!他們一共有 k 個人,每個人都會背乙個包。這些包的容量是相同的,都是 v 可以裝進揹包裡的一共有 n 種物品,每種物品都有給定的體積和價值。在 dd 看來,合理的揹包安排方案是這樣的 每個人揹包裡裝的物品的總體積恰等於包的容量。每個包裡的每種物品最多只有一件,但...
洛谷 P1858 多人揹包 DP
目錄輸入輸出樣例 說明思路 ac 洛谷 p1858 多人揹包 求01揹包前k優解的價值和 第一行三個數 k,v,n 接下來每行兩個數,表示體積和價值 前 k 優解的價值和 2 10 5 3 12 7 20 2 45 6 1 157對於100 的資料,k leq 50,v leq 5000,n leq...
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 本題由於需要...