時間限制: 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
31 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 ...