從一組整數中選取若干個數,如何使得它們的平均數與中位數之差最大?

時間 2021-07-14 21:13:59

1樓:

陣列長度為奇數時找最小的數當中位數,其餘的數為依次最大的數。從陣列長度為3開始,依次從剩餘的數中抽最大的數放進來,因為此時的平均數趨勢是先增加再減少的,所以取極值就是最優。

陣列長度為偶數時找最小的兩個放中間,其餘的與奇數同理。從陣列長度為4開始。

當陣列長度為2時,無論是取最大最小還是兩個最小都無所謂,因為差都是0。

2樓:

首先我們能判斷出所選的這些數的個數一定是奇數,因為偶數的話,若我們去掉中間那兩個數中較大的乙個,所得的解是不會變差的。那麼就可以推出中位數一定是原先數列中的某乙個數。我們來列舉這個中位數,然後再在二分的找選出的數的長度l,當平均數最大時找到的數一定是中位數右邊最大的a[n - l / 2+ 1 :

n]和a[i - l / 2 : i](中位數為a[i]時),那麼處理l/2即可。由於此平均數為先增大後減小,那麼二分則是沒有問題的。

3樓:

感覺這題很智障啊,當然也有可能是我智障。

說思路,中位數小於平均數的情況,盡量使得中位數小,而平均數大,假設取5個數。那麼我們先取陣列的最小的三個數(中位數盡可能小),現在要使平均數盡可能大了,剩下的兩個數取最大的數。中位數大於平均數的情況同理,然後比較兩種情況哪個更優,得解。

用反證法似乎可以證明這個理論。

補充,也有可能我理解錯了,取的數數量不固定,但是即使這樣,也可以先給陣列排序,然後遞推1-n個數的最優解。複雜度都落在排序上了

4樓:Meiku Kazami

首先想最優解中中位數只能是原數列中的數或原數列中相鄰兩個數的平均值,不然最中間的兩個數總可以向乙個方向靠攏使得解不變差。

列舉中位數後是貪心成對取小於中位數的最小值,和大於中位數的最小值的過程。因此二分就可以了。

健身用6 10個一組和10 12個一組哪個長肌肉快?

ddtyyt 10個左右力竭的重量,保持在40 50秒整組完成標準動作,對於肌肉刺激最好,時間比做幾個更重要 向心目標肌群募集更精準,離心收縮相對更慢更重要 柿子 6 10個一組更適合增肌。首先從人的意志力角度講,10個10rm比6個6rm 打個比方 需要更多的意志力。因為假如做到一半時開始產生痠痛...

求一組好聽的qq個性簽名?

ossqcbzz 幸福的個性簽名浪漫愛情幸福的個性簽名寶貝只有你能讓我魂牽夢縈我怕時間太快,不夠將你看仔細。你每個小小的心願,我都想要去兌現。如果可以早一點,怎麼捨得輕易把你疏遠。你在我心裡,使一切都變成甜的。若你沒有遇到可以帶你回家的人,我便帶你走。有時候,我們愛上的不是他,而是回憶。你說謊說得那...

臥推6組,每組8次,最後一組力竭,組間歇3 5分鐘,那這重量是自己11rm嗎?

練柔術增肌做戰士 把rm次數當做可以6組次數的回答全部點踩,rm就是一組乾到力竭重量的次數,可以忍受住痛苦就可以測出。很多人把固定次數做組重量當rm。rm就是固定做組次數?都是能用5rm做完5x5的超人體質?都是能用10rm做完10x10的活神仙?還是磕了太上老君仙丹當材料做的肌酸無限體力? 教人受...