切換
舊版
前往
大廳
主題

ZeroJudge - e606: 10057 - A mid-summer nights dream 解題心得

Not In My Back Yard | 2020-01-16 00:32:47 | 巴幣 0 | 人氣 260

題目連結:


題目大意:
給定一正整數 n (0 < n ≦ 1000000),代表有一數列 X1 、 X2 、 …… 、 Xn 。接著的 n 列,每列給定一正整數(皆小於 65536),代表這個數列的內容。

找到 A 滿足 |X1 - A| + |X2 - A| + …… + |Xn - A| 為最小值。

先輸出 A 最小可能為何;再輸出數列裡有多少數字屬於可能的 A 值;最後輸出 A 可能的值之數量。這三個數字各自以一個空格作分隔。



範例輸入:
2
10
10
4
1
2
2
4


範例輸出:
10 2 1
2 2 1


解題思維:
這題的稍作變化版。

假設數列排序之後,最中間兩個數字 L 、 R(這是 n 為偶數的情況,奇數的話則只假設 L)。

則所求第一個最小的 A 即 L ;所求第二個則是數列中與 L 同值的數量 + 與 R 同值的數量(因為可能有很多數字等於 L 或 R,甚至 L 就等於 R ;至於 n 為奇數的情況就只需看 L);所求第三個則是 R - L + 1 (因為 L ~ R 中間所有數字皆可以是 A 的值)。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

心彩
解到這題 回去看a737 發現偶數根本不用取平均 直接拿num[(n-1)/2] 就能當計算用的中位數了
2023-06-16 14:33:39
Not In My Back Yard
是的。
2023-06-16 14:35:39

相關創作

更多創作