CF1102D Balanced Ternary String

题目描述

给定一个长度为 $n$ 的字符串 $s$,其中每个字符都是 '0'、'1' 或 '2'。这样的字符串被称为三进制字符串。 你的任务是通过最少的字符替换,将该字符串变为一个平衡三进制字符串(平衡三进制字符串指的是其中 '0'、'1' 和 '2' 的数量都相等)。 在所有可能的平衡三进制字符串中,你需要得到字典序最小的那个。 注意,你不能从字符串中删除字符,也不能添加字符。你只能将给定的字符替换为 '0'、'1' 或 '2'。 保证一定存在答案。

输入格式

输入的第一行包含一个整数 $n$($3 \le n \le 3 \cdot 10^5$,$n$ 能被 $3$ 整除),表示字符串 $s$ 的长度。 第二行包含一个长度为 $n$ 的字符串 $s$,其中每个字符都是 '0'、'1' 或 '2'。

输出格式

输出一个字符串,即通过最少的替换操作,从给定字符串得到的字典序最小的平衡三进制字符串。 由于 $n$ 能被 $3$ 整除,显然一定存在答案,并且答案唯一。

说明/提示

由 ChatGPT 4.1 翻译