切換
舊版
前往
大廳
主題

ZeroJudge - a242: 第三題:絕對值總和的最小值 解題心得

Not In My Back Yard | 2020-06-23 00:49:57 | 巴幣 0 | 人氣 215

題目連結:


題目大意:
第一列給定一正整數 m (1 ≦ m ≦ 5),代表有 m 筆測試資料。每筆測資第一列給定一正整數 n (1 ≦ n ≦ 100000),代表接著有 n 列輸入。每列輸入(假設目前是第 i 列)會給定兩整數 ai 、 xi (|a1 + a2 + …… + an| ≦ 200000,且 ai 整除 xi)。

求對於任意實數 x ,|a1x - x1| + |a2x - x2| + …… + |anx - xn| 之最小值為何?


範例輸入:
2
1
1 1
3
1 1
1 2
100000 100000


範例輸出:
0
1


解題思維:
改寫 |a1x - x1| + |a2x - x2| + …… + |anx - xn|
為 a1|x - d1| + a2|x - d2| + …… + an|x - dn| ,其中 di = xi ÷ ai (i = 1 ~ n)

可以看到他是這種題目的變體,但是此處並非要找中位數。因為我們的絕對值前面都有一個 a 值,代表它們的「權重」。因此現在需要找到這些數字的「重心」。而其重心為
(x1 + x2 + …… + xn) ÷ (a1 + a2 + …… + an)
而找到重心之後直接計算其結果值即是所求的最小值。

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

創作回應

更多創作