【题解】AGC059B Arrange Your Balls
按顺序相同颜色的球一段一段放下去,这样每种颜色产生一次相邻的贡献,答案是 颜色数 。
就像 a bb cc dd ee (- a) 就是 种颜色。
也容易发现答案不可能小于 ,这样总存在两种颜色之间不能到达。
如何构造答案为 的情况?
为最小化不同颜色的相邻数,我们要尽可能利用已经有的相邻,使这种相邻出现两次。
样例 3 3 2 5 2
给了我们一种灵感:让一个球两边的颜色相同。
前面举的例子中 a bb cc dd ee (- a) 答案是 , 考虑避免 e 和 a 颜色不同, 我们就需要在中间放入 b 使得它是已经与 a 相邻过的球,同理放入 c , d ,最后形成的就是 a b c d ee d c b (-a) ,答案为 。
手玩一下会发现一个例子 a b a c a d a e a f ,用一个字母把其它字母岔开。
构造方式就显而易见了:
称只出现一次的字母集合为 , 出现更多次的集合为 。
若 非空,从 中取出元素放入环。
若 非空,从 中取出两个相同元素放在之前的两边,若还有还有该元素,重复以下操作:
若 非空,从 中取出元素放入环的某侧。
从 中取出元素放在同侧。
直至 为空。
此时 则答案为 ,直接放入即可。
否则答案为 ,排序或直接放入均可。
结论 : 时答案为 ,否则为 。
构造用一个 deque 可以简单地实现,时间复杂度
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970972,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步