題意:給出n個木棒長度,從無限長的木棒上鋸斷n-1次,每次鋸斷需要花費的代價為木棒的長度,求最小代價。
思路:huffman樹求最小權值的問題,用優先佇列可以很方便的解決這道題。
#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
const int maxn=10010;
typedef __int64 ll;
ll n,x;
int main()
} printf("%i64d\n",sum);
} return 0;
}
poj 3253哈夫曼樹
題目的意思是。要把一塊木板切成所需要的n塊,但是每切一刀需要收費。收費的方法是 網上有一些人理解有誤 每當在一塊木板上動刀子,這塊木板的原有長度代表了這刀的費用。思路 切割的過程可以用一棵二叉樹表示,每個節點有兩個或者沒有子節點,節點儲存切割過程中每塊木板的長度。父節點的值 兩個子節點相加 根節點是...
poj3253 貪心選擇
por3242 fence repair 題目大意 給定乙個木條,鋸成指定要求的長度,每鋸一次花費是被鋸成的兩段長度之和。求最小的花費。解題思路 將小木條合併成乙個大木條,貪心。每次都選取最小的長度合併。求最小的時候用優先佇列。include include include include prag...
poj3253 優先佇列
解題思路 分析得非常好!利用huffman思想,要使總費用最小,那麼每次只選取最小長度的兩塊木板相加,再把這些 和 累加到總費用中即可 本題雖然利用了huffman思想,但是直接用huffmantree做會超時,可以用優先佇列做 因為樸素的huffmantree思想是 1 先把輸入的所有元素公升序排...