題目描述
daa 和他的朋友組成乙個團隊去旅行了。他們每個人都準備了乙個揹包,用來裝旅行用的物
品。他們的揹包有兩個特點:
1. 每個人的揹包能裝無限多的物品,每種物品有乙個價值,但只能裝一件;
2. 每個人都很有個性,所以每個人的揹包不會完全相同。
daa 的團隊中有m 個人,那麼對於整個團隊,揹包價值和最大是多少呢?
輸入
第一行兩個整數m、n,表示團隊的人數和物品的數量。
接下來一行n 個整數,表示每件物品的價值wi。
資料保證不會出現有空揹包人的出現。
輸出
乙個整數,整個團隊揹包價值的最大值。
樣例輸入
sample input 1:
232
71
sample input 2:
841
234
樣例輸出
sample output 1:
19
sample output 2:
58
資料範圍限制
【資料規模】
30%的資料 1<=m,n<=15。
60%的資料 1<=m<=200,1<=n<=100。
100%的資料 1<=m<=1,000,000,1<=n<=500,0提示
【樣例解釋】
19=(2+7+1)+(2+7)
58=(1+2+3+4)+(2+3+4)+(1+3+4)+(1+2+4)+(3+4)+(1+2+3)+(2+4)+(2+3)
題目思路:
揹包問題翻一下版:
用揹包問題其實就能很容易地巧妙地跳過第2個特點所帶來的限制。
設f[i]為最大值為i的方案數。
f[i]:=f[i]+f[i-當前選擇的數];
注意初值:當迴圈到第k個物品時才賦值。
然後,取前邊的m個值的和即可。
最後我們用乙個貪心結束程式即可。
#include
#include
using
namespace std;
long
long m,n,w[
505]
,f[25005];
long
long ans=
0,s=0;
intmain()
f[0]=
1;for(
int i=
1;i<=n;i++
)for
(int j=s;j>=w[i]
;j--
) f[j]
+=f[j-w[i]];
//動態轉移方程
for(
int i=s;i>=
0;i--
)//貪心
if(m>f[i]
)else
cout
}
團隊作業 王者光耀 team
光耀101 是福州大學數計學院計算機專業推出的中國首部程式猿脫髮養成節目。由張棟擔任發起人,劉晨瑤 暢暢擔任導師。該節目召集了你猜多少位選手,通過任務 訓練 考核,讓選手在明星導師訓練下成長,最終選出5位選手,組成全新的偶像團體 fiveplus 出道 中文譯名 c 一拖四 此處應有合照 隊長資訊 ...
很好用的團隊TodoList系統 TeamToy
這幾天一直在尋摸乙個靠譜的團隊協作平台。其實需要的功能很簡單,只需要簡單的狀態分享和todo list分享即可,能夠替代我目前在pc上使用的todolist abstractspoon就行。這種系統的好處是很多的,比如 以前試用過國外的teambox和todo.ly,功能還不錯,就是有幾次登入不上去...
揹包 01揹包,完全揹包,多重揹包
哈哈 01揹包 f i v max 完全揹包 f i v max 多重揹包 f i v max include include include include include define maxn 1000 using namespace std int n,cap int w maxn 重量 花...