B多元Huffman編碼問題

2021-09-18 07:01:24 字數 933 閱讀 6323

time limit: 1000 ms memory limit: 65536 kib

submit

statistic

problem description

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

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

input

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

output

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

sample input

7 3

45 13 12 16 9 5 22

sample output

593 199
hint

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

#include

using namespace std;

long long a[100010];

long long stmax(int n, int k)

max+=sum;

q.push(sum);

}while(!q.empty())

return max;

}long long stmin(int n, int k)

for(int i = 0; i < k-m; i++)

}long long sum = 0, min = 0;

while(q.size()>k)

cout<}

多元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堆石子合併成新的一堆,合併的費用為新的一堆的石子數。...