国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【寒假任務】 洛谷1094 紀念品分組

2019-11-08 18:40:03
字體:
來源:轉載
供稿:網友

問題描述 元旦快到了,校學生會讓樂樂負責新年晚會的紀念品發放工作。為使得參加晚會的同學所獲得 的紀念品價值相對均衡,他要把購來的紀念品根據價格進行分組,但每組最多只能包括兩件紀念品, 并且每組紀念品的價格之和不能超過一個給定的整數。為了保證在盡量短的時間內發完所有紀念品,樂樂希望分組的數目最少。 你的任務是寫一個程序,找出所有分組方案中分組數最少的一種,輸出最少的分組數目。 輸入 第1行包括一個整數w,為每組紀念品價格之和的上上限。 第2行為一個整數n,表示購來的紀念品的總件數G 第3~n+2行每行包含一個正整數Pi (5 <= Pi <= w)w表示所對應紀念品的價格。 輸出 包含一個整數,即最少的分組數目。 樣例輸入 100 9 90 20 20 30 50 60 70 80 90 樣例輸出 6 算法討論 先從大到小排序,拿最大的加最小的,標記,不行就拿第二大的,以此類推,最后把沒標記的加上。有個小優化,若不管怎樣都無法再組合了,那就不用再找了,直接退出。

const maxn=30000;var a:array[1..maxn] of longint; f:array[1..maxn] of boolean; i,j,n,s,w:longint; flag:boolean;PRocedure qsort(l,r:longint);var i,j,m,t:longint;begin i:=l; j:=r; m:=a[(l+r) div 2]; repeat while a[i]>m do inc(i); while a[j]<m do dec(j); if i<=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; inc(i); dec(j) end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r)end;begin read(w); read(n); for i:=1 to n do read(a[i]); qsort(1,n); for i:=n downto 1 do begin flag:=false; for j:=1 to i-1 do if (f[j]=false) and (a[i]+a[j]<=w) and (i<>j) then begin f[j]:=true; f[i]:=true; flag:=true; inc(s); break end; if flag=false then break end; for i:=1 to n do if f[i]=false then inc(s); write(s)end.

這里寫圖片描述 Pixiv ID:61481273


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿州市| 旬阳县| 栾川县| 绥化市| 夹江县| 嘉兴市| 西丰县| 孟村| 沾益县| 汕尾市| 龙里县| 连山| 郸城县| 永福县| 洪雅县| 龙南县| 德州市| 太和县| 乐平市| 泰来县| 邢台市| 玛曲县| 鄄城县| 永德县| 涞源县| 浠水县| 玉屏| 石门县| 和林格尔县| 土默特右旗| 志丹县| 开化县| 湘阴县| 新邵县| 南安市| 门源| 丹东市| 吕梁市| 武功县| 怀来县| 固阳县|