最優合併問題
description
給定k 個排好序的序列s1 , s2,……, sk , 用2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的2 路合併演算法合併2 個長度分別為m和n的序列需要m + n -1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需的總比較次數最少。
為了進行比較,還需要確定合併這個序列的最差合併順序,使所需的總比較次數最多。
對於給定的k個待合併序列,計算最多比較次數和最少比較次數合併方案。
input
輸入資料的第一行有1 個正整數k(k≤1000),表示有k個待合併序列。接下來的1 行中,有k個正整數,表示k個待合併序列的長度。
output
輸出兩個整數,中間用空格隔開,表示計算出的最多比較次數和最少比較次數。
sample
input
45 12 11 2
output
78 52
ac**:
#include
using namespace std;
intmain()
long
long sum_mi =
0,sum_ma =0;
while
(q1.
size()
>1)
while
(q2.
size()
>1)
cout<" "<}
貪心 最優合併問題
最優合併問題 time limit 1000ms memory limit 65536kb submit statistic discuss problem description 給定k 個排好序的序列s1 s2,sk 用2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的2 路合併演算法合...
C 最優合併問題(貪心)
time limit 1000 ms memory limit 65536 kib submit statistic problem description 給定k 個排好序的序列s1 s2,sk 用2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的2 路合併演算法合併2 個長度分別為m和n...
貪心思想之無重疊區間問題
給你很多形如 start,end 的閉區間,請你設計乙個演算法,算出這些區間中最多有幾個互不相交的區間。這個問題在生活中的應用廣泛,比如你今天有好幾個活動,每個活動都可以用區間 start,end 表示開始和結束的時間,請問你今天最多能參加幾個活動呢?可以分為以下三步 把這個思路實現成演算法的話,可...