poj 1862 還是哈夫曼思想貪心

2021-06-28 18:55:15 字數 728 閱讀 4034

題意:科學家發現一種奇怪的玩意,他們有重量wi,

如果他們碰在一起,總重變成2*sqrt(t1*t2)。

要求出最終的重量的最小值。

思路:果然a題多點經驗就用上了,跟農夫鋸木頭那個乙個思路,哈夫曼思想,把所有重量放堆裡,每次取倆最小的處理再放堆裡,最後堆剩下的最後元素就是答案了

**:

#include #include #include #include #include #include using namespace std;

//題目大意:科學家發現一種奇怪的玩意,他們有重量weight,

//如果他們碰在一起,總重變成2*sqrt(m1*m2)。

//要求出最終的重量的最小值。

int n;

double a[2000];

void input()

void solve()

cout.setf( ios::fixed );

cout.precision(3);

cout << q.top() << endl;//cout輸出用了47ms

// ans = q.top();

// printf("%.3lf\n",ans);//printf 0ms無壓力

}//所以說能用c的還是用c的吧,這次當練cout格式化輸出了

int main()

return 0;

}

貪心 哈夫曼思想

題意 科學家發現一種奇怪的玩意,他們重量分別是wi,如果他們碰在一起,總重變成2 sqrt w1 w2 要求出最終的重量的最小值。思路 哈夫曼思想,把所有重量放優先佇列裡,這裡每次取倆最大的處理後再放回去,最後佇列剩下的最後元素就是最小的 需要注意的是oj交g 的時候,double型的輸出格式用 f...

poj 3253 哈夫曼思想 優先佇列實現

這兩天都沒怎麼寫 因為數學拉的太多了。期中考來了。今天看了一篇文章,又想起這題,就跑來看看,發現之前居然並沒有寫題解。思路,每個木板的開銷應該是木板的長度乘以節點的深度。那麼就是最短的板應該是深度最大的節點之一,每次將最短的和次短的合併起來就是當前最小的開銷,一直加起來直到所有木板最後合併成乙個木板...

哈夫曼編碼的思想(思路)

寫的比較亂 哈哈 但是理解起來應該還好 哈夫曼構建 define n 50 葉子節點個數 哈夫曼重點在於它是用陣列儲存結構的,也是用陣列序列化 構建 的 它需要乙個指明節點權值陣列和節點自身字元陣列的就可以了 然後通過哈夫曼規則構建有父節點和左右孩子節點的結構體陣列,這就是哈夫曼 所以就沒有用到鍊錶...