題解 POJ 1862 Stripies 貪心

2021-10-06 02:27:32 字數 1127 閱讀 1464

我們的化學生物學家已經發明了一種新的非常有用的生命形式——條紋(實際上,它們最初在俄語中被稱為polosatiki,但科學家們不得不發明乙個英文名字來申請一項國際專利)。條紋是一種透明無定形的阿公尺巴形生物,生活在果凍狀的營養培養基中。大多數時候,條紋是移動的。當它們中的兩個碰撞時,乙個新的stripie將代替它們出現。我們的科學家通過長時間的觀察,使他們能夠確定新的條紋的重量不等於兩個碰撞的消失的條紋的重量之和;儘管如此,他們很快發現當兩個條帶的權值m1和m2發生碰撞時,產生的條帶權值等於2*sqrt(m1*m2)。我們的化學生物學家非常渴望知道什麼限制可以減少乙個給定種群的條紋的總重量。

你要編寫乙個程式來幫助他們回答這個問題。您可以假設3個或更多的津貼不會發生衝突。

輸入的第一行包含乙個整數n (1 <= n <= 100)——乙個菌落的條紋數。下n行中的每一行都包含乙個整數,範圍從1到10000—對應stripie的權重。

輸出必須包含一行,其中包含殖民地的最小可能總權值,該點之後的精度為三位小數。

sample input

3

7230

50

sample output

120.000
題意:給你n個數,其中兩個碰撞得到乙個新的數,求碰撞到最後只剩乙個數時最小為多少。

思路:很容易想到哈夫曼樹,然後用優先佇列。具體見**。

#include

#include

#include

#include

using

namespace std;

intmain()

while

(que.

size()

>1)

cout << fixed <<

setprecision(3

)<< que.

top(

)<< endl;

//用scanf更方便,這裡用一下防止遺忘

return0;

}

POJ 1862 最小質量

題意 近來,鴇神養了一些小細菌st,為了喜迎地大60周年,鴇神將st們組成60周年的圖案。在組成圖案的過程中,鴇神發現當兩個st碰撞在一起時,會生成乙個新的st,而之前的兩個st就消失了。作為乙個嚴謹的acmer,鴇神測定了兩個st的質量,分別是m1和m2。而新生成的st的質量等於2 sqrt m1...

POJ 1862 Stripies 貪心 優先佇列

題目大意 有一種生物能兩兩合併,合併之前的重量分別為m1和m2,合併之後變為2 sqrt m1 m2 現在給定n個這樣的生物,求合併成乙個的最小重量 思路 m1 m2 2 sqrt m1 m2 所以每次取大的去合併,能變小。直接優先佇列就可以啦。include include includeusin...

poj 1862 還是哈夫曼思想貪心

題意 科學家發現一種奇怪的玩意,他們有重量wi,如果他們碰在一起,總重變成2 sqrt t1 t2 要求出最終的重量的最小值。思路 果然a題多點經驗就用上了,跟農夫鋸木頭那個乙個思路,哈夫曼思想,把所有重量放堆裡,每次取倆最小的處理再放堆裡,最後堆剩下的最後元素就是答案了 include inclu...