AISING2020E 題解

liangbowen發表於2024-08-06

blog。沒題解就來寫一篇捏。


顯然 \(L_i>R_i\) 的人都想去左邊(記為 LFT 人),\(L_i<R_i\) 的人都想去右邊(記為 RHT 人),\(L_i=R_i\) 的人可以擺爛。

(LFT 人與 RHT 人互相干擾,很難刻畫。於是找性質。)

存在最優方案,使得所有 LFT 人都在 RHT 人的左邊。證明:如果有 RHT 人在 LFT 人的左邊,交換兩人不會使答案更劣。

即:假設有 \(x\) 個 LFT 人,那麼 \(1\sim x\) 的位置全是 LFT 人,\(x+1\sim N\) 的位置全是 RHT 人。

於是可以分開考慮 LFT 人與 RHT 人了!下文將只考慮 LFT 人。


先令初始答案為 \(\sum R_i\),然後再看有多少個 LFT 人能從 \(R_i\) 調整成 \(L_i\)。記 \(v_i=L_i-R_i\),只需解決如下問題:

如果第 \(i\) 個元素在前 \(K_i\) 個元素中,那麼會獲得 \(v_i\) 的價值。求出最大價值。

這個就是入門貪心了,按 \(v_i\) 排序後貪心放置即可,可以用 set / priority_queue 模擬。當然也可以反悔貪心(

code,時間複雜度 \(O(n\log n)\)