P16090 [ICPC 2024 NAC] Not Another Constructive!

题目描述

厌倦了解几何题,你决定解决下面的构造问题:找到一个长度为 $ n $ 的字符串,使其恰好包含 $ k $ 个(不一定连续的)子序列 `NAC`。 然而,这个问题似乎太熟悉了。转折点在于——你的朋友已经给出了字符串的一部分,因此你必须填入剩余的字符!

输入格式

输入的第一行包含两个整数 $ n $($ 1 \le n \le 40 $)和 $ k $($ 0 \le k \le 2{,}500 $),其中 $ n $ 是字符串的长度,$ k $ 是输出字符串必须包含的(不一定连续的)子序列 `NAC` 的数量。 第二行包含一个长度为 $ n $ 的字符串,仅由大写字母和/或问号组成。

输出格式

输出一个大写字母字符串,将输入字符串中的每个问号替换成一个大写字母,使得得到的字符串恰好包含 $ k $ 个子序列 `NAC`。如果不可能做到,则输出 $ -1 $。输入字符串中的任何大写字母必须保留在它们的位置上。对于任何给定的测试用例,可能存在多个解;任何正确的解都将被接受。

说明/提示

翻译由 DeepSeek V3.2 完成