題意:科學家發現一種奇怪的玩意,他們有重量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 葉子節點個數 哈夫曼重點在於它是用陣列儲存結構的,也是用陣列序列化 構建 的 它需要乙個指明節點權值陣列和節點自身字元陣列的就可以了 然後通過哈夫曼規則構建有父節點和左右孩子節點的結構體陣列,這就是哈夫曼 所以就沒有用到鍊錶...