ARC114D Moving Pieces on Line
题意 :数轴上有
初始时,数轴全为白色。可以每次选择一个球向左或者向右滚一段距离,且将滚过的部分反色。
给定
求球滚过的最小总距离,或指出无解。
不难发现,在最优方案中,对于单独某个球,其滚动不可能回头,相当于只滚了一次。
区间操作不便处理,用 xor 差分转化问题。
记
将位于
剩下的问题就是:
数轴上有若干个红点(
(蓝红匹配就是用
若蓝点数大于红点数则无解(蓝红点数奇偶性不同也无解,不过题目保证没有这种情况)。先考虑蓝红点数相等的情况。
不难发现,一对交叉的匹配可以不劣地调整为一对不交叉的匹配,于是一定存在一种最优解是不交叉的。
将红蓝点分别排序,按排名对位匹配即可。
接着考虑红点多余的情况,若我们钦定了一个红点的匹配集合,必然是内部相邻的匹配,外部按排名匹配。
可以发现,若两个排名不相邻的红点匹配,可以不劣地调整成两个排名相邻的红点匹配。
记
一蓝一红:
相邻两红:
复杂度