Loading

CF1615F LEGOndary Grandmaster

这种题我一辈子都做不明白。

首先看到 \(0/1\) 串且不影响奇偶性直接考虑奇数位置反转,反转完之后变成 \(10\)\(01\) 互换。

比较好的理解是,双方对应位置的 \(1\) 相匹配,那么最小操作次数就是 \(\sum |x_i - y_i|\),其中 \(x_i\) 是初始第 \(i\)\(1\) 的位置,\(y_i\) 同理,具体证明可以用交换法证一定不优。

但是这个形式仍然不太好计数,我们该怎么办,令 \(a_i\) 为前 \(i\) 个位置 \(1\) 的个数,\(b_i\) 同理,那么代价为 \(\sum |a_i - b_i|\),原因是每次移动恰好改变一个前缀和(不改变前缀和的操作一定无用)。

最后一步就是拆贡献了,对于每个位置,拆其在贡献答案的位置总共贡献了多少次,这是好算的。

当然也有组合大神做到线性。

posted @ 2025-10-02 10:49  Alexande  阅读(7)  评论(0)    收藏  举报