合併果子思路

2022-05-28 01:06:11 字數 346 閱讀 6230

有n堆數量不同的果子,我們每次最多可以合併k堆果子,消耗體力值為合併這些堆的果子數之和,設計耗費體力最少的方案把n堆果子合併為一堆。

如果我們能每次合併k堆的話,顯然按照哈弗曼的思想,每次合併最小的k堆直到合併完是最優解。但很顯然有不能每次合併k堆的情況,比如n=8,k=3的情況,最後剩下兩堆。

從n堆到1堆,減少的堆數是n-1堆,我們每次最多只能讓整體減少k-1堆,所以,當 (n-1)%(k-1) == 0的時候,可以每次k堆合併完,當 (n-1)%(k-1) != 0 的時候,我們最後會剩下 s = (n-1)%(k-1) + 1 堆, s>0且s<=k-1

這時,最優的方案顯然是先將這s堆合併為一堆,然後接下來每次合併k堆

合併果子(multiset)

time limit 1 sec memory limit 128 mb submit 312 solved 113 submit status web board 現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。第一行包...

swustoj合併果子

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

2464 合併果子

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