#11092: 解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
a242. 第三題:絕對值總和的最小值 -- 100學年度板橋高中校內資訊學科能力競賽 | From: [140.123.56.238] | 發表日期 : 2016-06-25 13:50

 首先可以參考 gtyuse 的想法

|a1x - x1| + |a2x - x2| + ... + |anx - xn

可以看成是 a1 |x - x1/a1| +a2 |x - x2/a2| + ... +an |x - xn/an

可以看成是找中位數的題目

 

我在這裡翻譯成更簡單的敘述

若要找 2*|x - 4| + 3*|x - 2| + |x - 3| 

可以看成是 |x - 4| + |x - 4| + |x - 2| + |x - 2| + |x - 2| + |x - 3|  

我們得到數列 4 4 2 2 2 3 3   排序後變成 2 2 2 3 4 4

其中x的最小值為即為此數列的中位數 

以此題為例 在選擇偶數個元素的數列的中位數時,可以不用選擇(2+3)/2

你可以把2或3當成中位數,因為 2 或 3 或 5/2 與數列相減後得到的結果都會相同

ex  

當x = 2帶入此數列後

|2 - 4| + |2 - 4| + |2 - 2| + |2 - 2| + |2 - 2| + |2 - 3| = 5 

當x = 3帶入此數列後

|3 - 4| + |3 - 4| + |3 - 2| + |3 - 2| + |3 - 2| + |3 - 3| = 5 

當x = 5/2帶入此數列後

|5/2 - 4| + |5/2 - 4| + |5/2 - 2| + |5/2 - 2| + |5/2 - 2| + |5/2 - 3| = 5

 

而且最後一個陷阱是總合會超過int範圍  所以請用long long int

大概就是這樣

 
ZeroJudge Forum