P3644 八鄰旁之橋 題解

2022-03-12 11:39:34 字數 1127 閱讀 2600

portal

首先注意到家和辦公室在河同側的是方案唯一的(就直接走),先算到答案裡面去。然後剩下來的都是被分在兩岸的。

顯然兩岸哪個是家哪個是辦公室不重要。我們設它們的位置為 \(l\leq r\)。於是如果通過的橋為 \(a\),不難列出走的路程的式子 \(|l-a|+|r-a|+1\)(我當時就是沒想到把式子列出來,進一步通過 \(+\) 號拆成兩個獨立的元素,而想著以家、辦公室的對為最小元素做,這顯然是麻煩的),其中這個 \(1\) 也可以預處理掉,剩下兩個絕對值之和。

對 \(m\) 分類:

\(m=1\)。這個其實簡單至極,就算不列式也可以輕鬆做。不過我們已經把式子列出來了,那就照這個思路做吧。我們設這條唯一的橋為 \(a\),那麼答案就是 \(\sum(|l_i-a|+|r_i-a|)\),不難發現 \(\sum\) 後面的兩項也是獨立的(這是本題的關鍵),於是拆開,拆成 \(2n\) 個 \(|x-a|\) 的和。那麼根據初一數學我們知道 \(a\) 取 \(x\) 的中位數的時候最優;

\(m=2\)。依然沿用上面的思路,只不過對於橋 \(a每個人可以有兩種決策(目前為止還不能拆開,因為家和辦公室的決策必須相同)。我們考慮對 \(l,r\),\(a\) 和 \(b\) 哪個更優呢?分成四類(\(l\) 與 \(a\) 的關係、\(r\) 與 \(b\) 的關係)不難列出條件式:\(l\) 更優當且僅當 \(l-a\leq b-r\)。移項得 \(l+r\leq a+b\)。這樣子就是乙個關於 \(l_i+r_i\) 的不等式。於是又有了乙個結論:按 \(l+r\) 排序後,選左邊橋的一定是個字首,於是選右邊橋的是字尾。於是我們考慮慣用套路:列舉這個斷點。

斷點兩邊顯然是獨立的。對於每邊,這時候可以將絕對值拆開了,歸約到了 \(m=1\) 的時候。於是現在問題就是如何快速求出每個字首的中位數(又暴露了 apio 的毒瘤 ds 本質)。顯然要從左往右依次加入數。那麼維護這個傻子都能想到平衡樹,但是 hb 瀝盡心血教我們如何不用平衡樹、線段樹等資料結構,我們也不能辜負他的期望。這個插入數、查 xth 顯然離散化然後值域 bit 倍增也可以。還有一種更簡便的方法:維護左右兩半的set,每次插入後調整一下左右兩邊的相對單調性,然後微調一下兩邊的元素個數平衡即可,這個還是挺自然的。

code

Luogu P3644 八鄰旁的橋

luogu 3644 八鄰旁的橋 quad 首先考慮 k 1 的情況,其實抽象一下很像之前做的中位數的題,答案就是所有位置的中位數。quad 再考慮 k 2 的情況,那麼無非就是將一條河分成兩邊,一邊走這個 quad 橋,另一邊走那個橋。於是我們列舉分割點,這樣就轉換成了第一種情況。quad 但是如...

APIO2015 八鄰旁之橋

傳送門 題目大意 兩條水平的直線,距離為 1 給定 n 對座標,座標是在某一條直線上的某乙個位置,你可以建立 k 豎直的直線 k leq 2 要使得每對座標只沿著直線移動從第乙個座標到第二個座標的距離和最小。題解首先可以求出在一對座標在同一條水平直線上的代價,對於需要跨越的,都經過了豎直直線的 1 ...

APIO2015 八鄰旁之橋

傳送門 這道題看起來十分的不可做 可能是我數學太差智商太低了orz。首先如果乙個人的家和辦公室在同一側那就完全不用考慮,把結果記下來就行。然後我們先考慮k 1的情況。因為只能建1座橋,那麼我們發現 除去過橋乙個單位長度不算 答案就是sigma abs ai x abs bi x 其中ai,bi表示區...