題目大意:
有一種生物能兩兩合併,合併之前的重量分別為m1和m2,合併之後變為2*sqrt(m1*m2),現在給定n個這樣的生物,求合併成乙個的最小重量
思路:m1+m2 >= 2*sqrt(m1*m2)
所以每次取大的去合併,能變小。
直接優先佇列就可以啦。
#include#include#includeusing namespace std;
priority_queueq;
int main()
void push(double x)
void pop()
void matain(int hole)
data[hole] = x; }
double top()
bool empty()
};int main()
{ int n;
while(~scanf("%d",&n))
{ heap q;
for(int i=0;i
題解 POJ 1862 Stripies 貪心
我們的化學生物學家已經發明了一種新的非常有用的生命形式 條紋 實際上,它們最初在俄語中被稱為polosatiki,但科學家們不得不發明乙個英文名字來申請一項國際專利 條紋是一種透明無定形的阿公尺巴形生物,生活在果凍狀的營養培養基中。大多數時候,條紋是移動的。當它們中的兩個碰撞時,乙個新的stripi...
poj 1862 還是哈夫曼思想貪心
題意 科學家發現一種奇怪的玩意,他們有重量wi,如果他們碰在一起,總重變成2 sqrt t1 t2 要求出最終的重量的最小值。思路 果然a題多點經驗就用上了,跟農夫鋸木頭那個乙個思路,哈夫曼思想,把所有重量放堆裡,每次取倆最小的處理再放堆裡,最後堆剩下的最後元素就是答案了 include inclu...
POJ2833,The Average(優先佇列)
突破口 開兩個優先佇列q ma,q mi,前者維護前n1個最大的數,後者維護後n2個最小的數。原本打算用乙個優先佇列儲存資料,但是如果全部都存的話會爆記憶體,而且還可能會超時,然後就想能不能用乙個優先佇列來存n n1 n2 個數就好 因為最終有效的資料個數就只有n n1 n2 個 這樣就不會爆記憶體...