最優合併問題 貪心思想

2021-10-11 11:41:13 字數 757 閱讀 1526

最優合併問題

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 表示開始和結束的時間,請問你今天最多能參加幾個活動呢?可以分為以下三步 把這個思路實現成演算法的話,可...