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 翻译