JZOJ 數列極差問題

2021-09-27 03:03:08 字數 1303 閱讀 8948

jzoj題目友鏈

在黑板上寫了n

nn個正整數組成的乙個數列,進行如下操作: 每次擦去其中的兩個數a

aa和b

bb,然後在數列中加入乙個數a×b

+1

a×b+1

a×b+

1,如此下去直至黑板上 剩下乙個數,在所有按這種操作方式最後得到的數中,最大的為max

maxma

x,最小的為min

minmi

n, 則該數列的極差定義為m=m

ax-m

in

m=max-min

m=max-

min。

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

第一行是數列的長度n

nn(不超過10

1010

),第二行起是數列中n

nn個數,相鄰2

22個數由空格分開;

每個數均不超過100

10010

0.輸出乙個整數表示數列極差m

樣例輸入

3

1 2 3

樣例輸出
2
分析:這道題拿到手呢,可以馬上看出來,這是用排序+模擬來做的。先把所有數排個序,然後做加減法就好了,就是這麼簡單!

code:

#include

//van♂能頭

using

namespace std;

int s[

10001

],j[

10001];

//陣列可以開大一點,防止re

intcmp

(int a,

int b)

intmain()

sort

(s,s+n)

;//從小到大排序

for(

register

int i=

1;i++i)

int max=s[n-1]

;//標記最大數

sort

(j,j+n,cmp)

;for

(register

int i=

1;i++i) j[i]

=j[i-1]

*j[i]+1

;//同上

int min=j[n-1]

;//此處時最小數

cout

return exit_success;

//van♂美結束

}

嗯這篇blog就到這裡了,樓下**字,歡迎掃一掃檢視↓。。。

數列極差問題

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

貪心 數列極差問題

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

問題 A 貪心 數列極差問題

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