UVA-10041 Vito's Family 解題紀錄
🔗 UVA-10041
tags: 貪心(Greedy)
, 中位數貪心
範例程式碼已於 UVA
、瘋狂程設(CPE)
、ZeroJudge
上皆測試通過。
題意
給定 個數字,找出一個數字,使得所有數字與這個數字的差的總和最小,並輸出這個總和。
思路:中位數貪心
中位數即為需要找的數字,說明如下:
- 對於 為奇數的情況,顯然中位數到所有點的距離和最小,左移或右移都會增加距離和,這可以用畫數線的方式來證明。
- 若 為偶數,則兩個中位數之間的任意數都可以是答案,同樣可以用畫數線的方式來證明。
故排序後,直接取下標 的數作為中位數,再計算所有點到中位數的距離和即可。
複雜度分析
- 時間複雜度:,排序的時間複雜度。
- 空間複雜度:,需要保存所有數字。
1 | t = int(input()) |
1 |
|
寫在最後
Cover photo is remixed from @Tiffany, thanks for his/her work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus