問題 A 貪心 數列極差問題

2021-08-28 03:33:03 字數 1271 閱讀 3678

題目描述

「我就說你在忽悠我吧,我剛才問了昆士蘭大學的好多魔法師,他們根本就沒有乙個人想過做什麼時間旅行的實驗,但搞笑的是,他們居然對你的理論很感興趣,想找個時間和你做進一步的討論。哎,我還以為他們和我一樣聰明呢,想不到這麼容易上當受騙。」小墨老師擺出一幅你騙不了我的表情。

「唉,你太自以為是了,這樣吧,你先把這道數列極差問題發給他們,如果他們能有所領悟,那我會找時間和他們討論一下時間旅行的可行性的。」李旭琳邊說邊在黑板上寫了n個正整數組成的乙個數列,並進行如下操作:每次擦去其中的兩個數a和b,然後在數列中加入乙個數a×b+1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的為max,最小的為min,則該數列的極差定義為m=max-min。

現在請你程式設計,對於給定的數列,計算極差。

輸入輸入包含多個測試集。每個測試集的第乙個數n表示 正整數序列長度(0≤n≤50000),隨後是n個正整數。n為0表示輸入結束。

輸出每個結果一行。

樣例輸入

3

1 2 3

0

樣例輸出

2
提示

每次合併最小的兩個最後得到的是最大的,而每次合併最大的兩個的時候最後得到的是最小的。

例如有6個數,即8 6 5 9 7 1

則min求值過程為:    max求值過程為:

73  7  6  5  1     6  6  7  8  9

512  6  5  1       37  7  8  9

3073  5  1        37  57  9

15366  1          334  57

15367             19039

ans=19039-15367=3672

#include #include #include #include using namespace std ;

const int max = 50010 ;

int a[max] ;

bool cmp(const int &a ,const int &b)

int b[max];

int main()

for(int i = 0 ; iint maxx = a[n-1] ;

for(int i = 0 ; iint minn = b[n-1] ;

cout

memset(b,0,sizeof(b)); }

return 0 ;

}

貪心 數列極差問題

題目描述 我就說你在忽悠我吧,我剛才問了昆士蘭大學的好多魔法師,他們根本就沒有乙個人想過做什麼時間旅行的實驗,但搞笑的是,他們居然對你的理論很感興趣,想找個時間和你做進一步的討論。哎,我還以為他們和我一樣聰明呢,想不到這麼容易上當受騙。小墨老師擺出一幅你騙不了我的表情。唉,你太自以為是了,這樣吧,你...

貪心 數列極差

時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 5 提交 狀態 討論版 命題人 add zmx 在黑板上寫了n個正整數組成的乙個數列,進行如下操作 每次擦去其中的兩個數a和b,然後在數列中加入乙個數a b 1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的為...

數列極差問題

在黑板上寫了n個正整數排成的乙個數列,進行如下操作 每次擦去其中的兩個數a和b,然後在數列中加入乙個數a b 1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的記為max,最小的記作min,則該數列的極差定義位m max min。問題分析 下面通過例項來認識題目中描述的計算...