題目描述
「我就說你在忽悠我吧,我剛才問了昆士蘭大學的好多魔法師,他們根本就沒有乙個人想過做什麼時間旅行的實驗,但搞笑的是,他們居然對你的理論很感興趣,想找個時間和你做進一步的討論。哎,我還以為他們和我一樣聰明呢,想不到這麼容易上當受騙。」小墨老師擺出一幅你騙不了我的表情。
「唉,你太自以為是了,這樣吧,你先把這道數列極差問題發給他們,如果他們能有所領悟,那我會找時間和他們討論一下時間旅行的可行性的。」李旭琳邊說邊在黑板上寫了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。問題分析 下面通過例項來認識題目中描述的計算...