動態規劃之禮品分組

2021-10-03 09:38:36 字數 1032 閱讀 6091

description

元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得 的紀念品價值相對均衡,他要把購來的紀念品根據**進行分組,但每組最多只能包括兩件紀念品, 並且每組紀念品的**之和不能超過乙個給定的整數。為了保證在盡量短的時間內發完所有紀念品,樂樂希望分組的數目最少。

你的任務是寫乙個程式,找出所有分組方案中分組數最少的一種,輸出最少的分組數目。

input

共n+2行:

第1行包括乙個整數w,為每組紀念品**之和的上上限。

第2行為乙個整數n,表示購來的紀念品的總件數g。

第3至n+2行每行包含乙個正整數pi(5≤pi≤w)表示所對應紀念品的**。

output

乙個整數,即最少的分組數目。

sample input

1009

9020

2030

5060

7080

90思路:

題目兩個要求,每組最多兩個,最終組數最少。

其實這道題很簡單,先排序(這邊假定從小到大)sort函式,再分組,分組方法為最後乙個加上最前乙個,如果和<=100,組數+1,最前面乙個往後,最後乙個往前。如果和》100,說明過大,大的那個只能乙個一組,組數+1,最後面乙個往前。

我思考的時候陷入了乙個誤區,如果max+min<100,要不要讓max加上乙個比min更小的,更好的利用空間,列出幾組資料後發現沒這必要。

#include

#include

#include

using namespace std;

intmain()

j=n;

int sum=0;

sort

(a,a+n)

;//利用庫函式快速排序

i=0;while

(i!=j && i-j!=1)

//判定條件,乙個往後乙個往前,由於不知道個數單雙應有兩個條件合起來

else

} cout<< sum;

}

分組揹包(動態規劃)

description 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。input 第一行 三個整數,v 揹包容量,v 200 n 物品數量,...

動態規劃之分組問題

原文 將n個人分成若干隊,每隊人數可以是1 2或者3人。已知n,求組隊方案數。輸入包含多組測試資料 約1000組 每組資料佔一行,包含乙個數字n 0 n 20 表示acm集訓隊的隊員人數 n為0,表示輸入結束。請輸出n個隊員所有可能的組隊方案數,每組輸出佔一行。123450 12514記dp i 為...

動態規劃 數字分組I

時間限制 1 sec 記憶體限制 64 mb 提交 106 解決 59 提交 狀態 討論版 命題人 題目描述 給出一堆魔法石的重量,問如何分成兩堆,使得它們質量和之差最小,求出這個最小值。輸入第一行乙個數n n 30 接下來n行,每行乙個正整數。每個數 100000 輸出乙個整數表示兩組數字和的最小...