【题解】AGC059B Arrange Your Balls
按顺序相同颜色的球一段一段放下去,这样每种颜色产生一次相邻的贡献,答案是 颜色数 $c$ 。
就像 a bb cc dd ee (- a) 就是 $5$ 种颜色。
也容易发现答案不可能小于 $c - 1$ ,这样总存在两种颜色之间不能到达。
如何构造答案为 $c-1$ 的情况?
为最小化不同颜色的相邻数,我们要尽可能利用已经有的相邻,使这种相邻出现两次。
样例 3 3 2 5 2 给了我们一种灵感:让一个球两边的颜色相同。
前面举的例子中 a bb cc dd ee (- a) 答案是 $5$ , 考虑避免 e 和 a 颜色不同, 我们就需要在中间放入 b 使得它是已经与 a 相邻过的球,同理放入 c , d ,最后形成的就是 a b c d ee d c b (-a) ,答案为 $4$。
手玩一下会发现一个例子 a b a c a d a e a f ,用一个字母把其它字母岔开。
构造方式就显而易见了:
称只出现一次的字母集合为 $S$ , 出现更多次的集合为 $T$ 。
若 $S$ 非空,从 $S$ 中取出元素放入环。
若 $T$ 非空,从 $T$ 中取出两个相同元素放在之前的两边,若还有还有该元素,重复以下操作:
若 $S$ 非空,从 $S$ 中取出元素放入环的某侧。
从 $T$ 中取出元素放在同侧。
直至 $T$ 为空。
此时 $|S|\leq 1$ 则答案为 $k - 1$,直接放入即可。
否则答案为 $k$ ,排序或直接放入均可。
结论 : $\sum_{a\in T} Cnt_a - 2 |T| + 2\geq |S|$ 时答案为 $k - 1$,否则为 $k$。
构造用一个 deque 可以简单地实现,时间复杂度 $O(n)$
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970972,谢谢你的阅读或转载!

浙公网安备 33010602011771号