AISING2020E 题解
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)\)。