CF1512C A-B Palindrome

题目描述

给定一个由字符 '0'、'1' 和 '?' 组成的字符串 $s$。你需要将字符串 $s$ 中所有的 '?' 替换为 '0' 或 '1',使得字符串变为回文串,并且恰好有 $a$ 个字符 '0' 和 $b$ 个字符 '1'。注意,每个 '?' 可以独立替换。 一个长度为 $n$ 的字符串 $t$ 被称为回文串,当且仅当对于所有 $i$($1 \le i \le n$),都有 $t[i] = t[n-i+1]$。 例如,如果 $s=$ "01?????0",$a=4$,$b=4$,你可以按以下方式替换 '?': - "01011010" - "01100110" 对于给定的字符串 $s$ 以及数字 $a$ 和 $b$,请将字符串 $s$ 中所有的 '?' 替换为 '0' 或 '1',使得字符串变为回文串,并且恰好有 $a$ 个字符 '0' 和 $b$ 个字符 '1'。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来每个测试用例包含两行: 第一行包含两个整数 $a$ 和 $b$($0 \le a, b \le 2 \times 10^5$,$a + b \ge 1$)。 第二行包含一个长度为 $a+b$ 的字符串 $s$,由字符 '0'、'1' 和 '?' 组成。 保证所有测试用例中字符串 $s$ 的总长度不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,输出一行: - 如果无法将字符串 $s$ 中所有的 '?' 替换为 '0' 或 '1',使得字符串变为回文串,并且恰好有 $a$ 个字符 '0' 和 $b$ 个字符 '1',则输出 "-1"; - 否则,输出替换后的字符串。 如果有多种可行的替换方案,你可以输出任意一种。

说明/提示

由 ChatGPT 4.1 翻译