洛谷P1090 合併果子 優先佇列 貪心

2022-01-19 14:05:11 字數 799 閱讀 4403

解析:

要想最後花費最少,肯定每次要加入兩個最小值。

所以貪心思路,就是每次取剩餘堆的兩個最小值相加,相加以後,把它放入佇列。

使用優先佇列實現:

priority_queue,greater > q;//

優先為小的優先佇列

因為合併所有,最多也就是n-1次,所以for遍歷n-1次即可。

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

priority_queue

,greater > q;//

優先為小的優先佇列

typedef long

long

ll;const

int maxn=1e5+20

;int

a[maxn];

struct

node

st[maxn];

bool

cmp(node a , node b)

intmain()

if(n==1

) cout

<1]

cout

}}

洛谷 P1090 合併果子 優先佇列

description 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過 n 1n 1n 1 次合併之後,就只剩下一堆了。多多在合併果子時...

洛谷 P1090 合併果子

題目描述 在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗...

洛谷 P1090 合併果子

在乙個果園裡,多多已經將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合併,多多可以把兩堆果子合併到一起,消耗的體力等於兩堆果子的重量之和。可以看出,所有的果子經過 n 1n 1次合併之後,就只剩下一堆了。多多在合併果子時總共消耗的體力等於每次合併所耗體...