acm 貪心感悟及解題思路

2021-10-03 21:47:54 字數 1169 閱讀 3318

金銀島

輸入

第1行是測試資料的組數k,後面跟著k組輸入。

每組測試資料佔3行,第1行是乙個正整數w (1 <= w <= 10000),表示口袋承重上限。第2行是乙個正整數s (1 <= s <=100),表示金屬種類。第3行有2s個正整數,分別為n1, v1, n2, v2, … , ns, vs分別為第一種,第二種,…,第s種金屬的總重量和總價值(1 <= ni <= 10000, 1 <= vi <= 10000)。

輸出

k行,每行輸出對應乙個輸入。輸出應精確到小數點後2位。

思路:1.最近剛學了結構體,題目中 每乙個物品都有總重量、總價值兩種效能,所以我想到用結構體來封裝他們。

struct node

node[

10000

];

2.題目中顯示注意到金屬是可以被任意分割的,並且金屬的價值和其重量成正比。由此想到用價效比來解決貪心問題,在貪心問題中價效比能解決很多問題。

for

(int i=

0;i)

3.題目問題是她最多能帶走多少價值的物品。由此想到可以把物品排序,先拿價效比最大的。為了優化我選擇了sort排序,sort排序原則上是從小到大。所以先規定排序規則。

double

cmp(node a1,node a2)

//排序規則

然後對結構體進行排序

sort

(node,node+n,cmp)

;

4.由於能拿的重量有限,口袋能裝下的總重量限制拿的重量。

for

(int i=

0;i)else

}

5.最後將**整合。

感悟:這是乙個比較簡單的貪心問題,我感覺貪心大部分問題都比較難思考,聽課也有一定雲裡霧裡的感覺,解決出他的最優解,我覺得要多做題,總結思路,現在做的題明顯不夠,所以處理大多數問題是都要思考很長時間,還不一定能思考出來。遞迴是將大問題化成小問題,而貪心則是找出最優解。

做貪心一定要會舉反例,來驗證自己的解法是不是最優解,要學會舉出與題目中不同的資料。

10道Hadoop面試真題及解題思路

演算法思想 分而治之 hash 二 搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1 255位元組。假設目前有一千萬個記錄 這些查詢串的重複度比較高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個。乙個查詢串的重複度越高,說明查詢它的使用者越多,也就是越熱門...

春秋web題目解題及思路彙總(自用蒐集)

include flag.php a request hello eval var dump a show source file 題目知識點 file get contents path 函式,獲得指定路徑下的檔案內容,以字串的形式返回出來。eval str 函式,把括號裡的字串,當作php命令來...

PTA 佇列模擬題目型別總結及解題思路 C

如1014,1017,1026,以下給出1017題目 如1006,1016,1095,以下給出1016題目 如何處理輸入的資料?int month,day,hour,min scanf d d d d month,day,hour,min 一般講所有的時間轉化為讀入的最小時間單元,用乙個變數儲存。在...