多元huffman編碼問題
time limit: 1000 ms memory limit: 65536 kib
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 345 13 12 16 9 5 22
sample output
593 199
#include
#include
#include
#include
using
namespace std;
priority_queue<
int>queue1;
///預設降序
priority_queue<
int,vector<
int>
,greater<
int>
>queue2;
void
greedy
(int n,
int k)
///求最大
while
(queue1.
size()
>1)
///求最小
heap =0;
while
(queue2.
size()
>1)
sum2+
=heap;
queue2.
push
(heap)
; heap =0;
///記得清零哦!
} cout<" "<}int
main()
greedy
(n,k)
;return0;
}
1760多元Huffman編碼問題(貪心)
在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。對於給定n堆石子,計算合併成一堆的最大總費用和最小總費用。輸入資料的第1 行有2 個正整...
多元Huffman編碼問題 貪心演算法
在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。對於給定n堆石子,計算合併成一堆的最大總費用和最小總費用。input 輸入資料的第1 行...
多元Huffman編碼問題
problem description 在乙個操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次至少選2 堆最多選k堆石子合併成新的一堆,合併的費用為新的一堆的石子數。試設計乙個演算法,計算出將n堆石子合併成一堆的最大總費用和最小總費用。對於給定n堆石子,計算合併成一堆的最大總費用和最...