CF1369B AccurateLee

题目描述

Lee 在为聚会打扫房间时,在地毯下发现了一串杂乱的字符串。现在他想要以准确且时尚的方式将其整理干净…… 他发现的字符串 $s$ 是一个长度为 $n$ 的二进制字符串(即字符串只包含 $0$ 和 $1$)。 每次操作,他可以选择两个相邻的字符 $s_i$ 和 $s_{i+1}$,如果 $s_i$ 是 $1$ 且 $s_{i+1}$ 是 $0$,他可以选择删除其中的一个字符(可以任选其一,但不能同时删除两个字符)。删除后字符串会缩短。 Lee 可以进行任意次数(也可以不进行)的操作,他希望将字符串 $s$ 变得尽可能“干净”。他认为,对于两个不同的字符串 $x$ 和 $y$,长度更短的字符串更“干净”;如果长度相同,则字典序更小的字符串更“干净”。 现在你需要回答 $t$ 个测试用例:对于第 $i$ 个测试用例,输出 Lee 通过若干次操作(可以为零次)后能得到的最“干净”的字符串。 小提示:如果有两个长度相同的字符串 $x$ 和 $y$,则当存在某个位置 $i$ 满足 $x_1 = y_1$,$x_2 = y_2$,……,$x_{i-1} = y_{i-1}$ 且 $x_i < y_i$ 时,$x$ 的字典序小于 $y$。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来的 $2t$ 行,每两行描述一个测试用例。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^5$),表示字符串 $s$ 的长度。 第二行包含一个二进制字符串 $s$,长度为 $n$,仅由 $0$ 和 $1$ 组成。 保证所有测试用例中 $n$ 的总和不超过 $10^5$。

输出格式

输出 $t$ 行,每行一个答案。 第 $i$ 行输出第 $i$ 个测试用例经过若干次操作(可以为零次)后能得到的最“干净”的字符串。

说明/提示

在第一个测试用例中,Lee 不能进行任何操作。 在第二个测试用例中,Lee 应该删除 $s_2$。 在第三个测试用例中,Lee 可以按如下顺序进行操作:$11001101 \rightarrow 1100101 \rightarrow 110101 \rightarrow 10101 \rightarrow 1101 \rightarrow 101 \rightarrow 01$。 由 ChatGPT 4.1 翻译