貪心 數列極差

2021-08-21 17:29:38 字數 1014 閱讀 2415

時間限制: 1 sec  記憶體限制: 128 mb

提交: 9  解決: 5

[提交][狀態][討論版][命題人:add_zmx]

在黑板上寫了n個正整數組成的乙個數列,進行如下操作:每次擦去其中的兩個數a和b,然後在數列中加入乙個數a×b+1,如此下去直至黑板上剩下乙個數,在所有按這種操作方式最後得到的數中,最大的為max,最小的為min,則該數列的極差定義為m=max-min。

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

第一行為乙個數n表示正整數序列長度(0<=n<=50000)

第二行為n個正整數。

輸出檔案只有一行,為相應的極差d

3 

1 2 3

2
求max:每次選取兩個最小的數

求min:每次選取兩個最大的數

因為每次計算後都要重新排序可以用優先佇列求解或者用插入排序

優先佇列每次放入乙個數都會自動排序

priority_queue ,less> p; //從大到小

priority_queue ,greater> q;//從小到大

#include#include#include#include#includeusing namespace std;

int n,a[50005],maxnum=0,minnum=0,ans,x,y,d;

int main()

while(q1.size()!=1)//黑板上剩下的數》1,繼續取兩個數x,y

maxnum=q1.top();

while(q2.size()!=1)//黑板上剩下的數》1,繼續取兩個數x,y

minnum=q2.top();

d=maxnum-minnum;

cout

}

貪心 數列極差問題

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

問題 A 貪心 數列極差問題

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

貪心 數列分段

時間限制 1 sec 記憶體限制 128 mb 提交 7 解決 5 提交 狀態 討論版 命題人 add zmx 對於給定的乙個長度為n的正整數數列a i 現要將其分成連續的若干段,並且每段和不超過m 可以等於m 問最少能將其分成多少段使得滿足要求。輸入檔案的第1行包含兩個正整數n,m,表示了數列a ...