二叉堆 洛谷P1090 合併果子

2021-08-22 12:01:43 字數 701 閱讀 7292

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次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體...