像潮落潮涌,送我奔向自由。|

寂静的海底

园龄:3年2个月粉丝:59关注:15

【题解】AGC059B Arrange Your Balls

按顺序相同颜色的球一段一段放下去,这样每种颜色产生一次相邻的贡献,答案是 颜色数 c

就像 a bb cc dd ee (- a) 就是 5 种颜色。

也容易发现答案不可能小于 c1 ,这样总存在两种颜色之间不能到达。

如何构造答案为 c1 的情况?

为最小化不同颜色的相邻数,我们要尽可能利用已经有的相邻,使这种相邻出现两次。

样例 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|1 则答案为 k1,直接放入即可。

否则答案为 k ,排序或直接放入均可。

结论 : aTCnta2|T|+2|S| 时答案为 k1,否则为 k

构造用一个 deque 可以简单地实现,时间复杂度 O(n)

posted @   寂静的海底  阅读(3)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起