lp1090
本題需要畫一下圖
可以觀察到:
每個果子的代價:重量*在樹中深度
考慮如果構造乙個深度越深的結點權值越小,就能達到最小權值。那麼本題的做法就變成了每次選最小的兩堆果子合併。這個可以用二叉堆來做。
#include
#include
#include
#include
#include
#define _for(i,a,b) for(int i = a; i#define _rep(i,a,b) for(int i = a; i<=b; i++)
using
namespace
std;
const
int maxn = 10000+10;
int n, t[maxn], cc;
void add(int x)
}int del()
return res;
}int main()
int ans = 0, w = 0;
_for(i,0,n-1)
printf("%d\n",ans);
return
0;}
堆 洛谷 P1090 合併果子
在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體力之和。...
洛谷 P1090 合併果子
題目描述 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗...
洛谷 P1090 合併果子
在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過 n 1n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體...