1760多元Huffman編碼問題(貪心)

2022-07-11 06:33:12 字數 1039 閱讀 2143

在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。

對於給定n堆石子,計算合併成一堆的最大總費用和最小總費用。

輸入資料的第1 行有2 個正整數n和k(n≤100000,k≤10000),表示有n堆石子,每次至少選2 堆最多選k堆石子合併。第2 行有n個數(每個數均不超過 100),分別表示每堆石子的個數。

將計算出的最大總費用和最小總費用輸出,兩個整數之間用空格分開。

input

7 3

45 13 12 16 9 5 22

output
593 199
請注意資料範圍是否可能爆 int。

1 #include 2 #include 3 #include 

4 #include 5 #include 6

7#define inf 0x3f3f3f3f89

using

namespace

std;

1011 priority_queue, greater > q1;///

greater是從小到大

12 priority_queue, less >q2;///

less是從大到小

1314

intmain()

1525

while(q1.size()%(k-1) != 1)26

29 sum1 = 0;30

while(q1.size()!=1)31

38 sum1 +=sum;

39q1.push(sum);40}

41 sum2 = 0;42

while(q2.size()!=1)43

50 sum2 +=sum;

51q2.push(sum);52}

53 cout << sum2 << "

"<< sum1 <54return0;

55 }

多元Huffman編碼問題

problem description 在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。對於給定n堆石子,計算合併成一堆的最大總費用和最...

多元Huffman編碼問題

problem description 在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。對於給定n堆石子,計算合併成一堆的最大總費用和最...

多元Huffman編碼問題

time limit 1000 ms memory limit 65536 kib submit statistic problem description 在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。...