luogu#P16795. [蓝桥杯 2026 国 B] 奇偶校验排列
[蓝桥杯 2026 国 B] 奇偶校验排列
题目描述
某个校验系统需要把 这 个编号各使用一次,排成一个长度为 的序列 。这样的序列称为一个排列。
系统会根据排列中相邻两个编号的差值奇偶性生成一个长度为 的校验串。对于每个 ,第 位校验字符 按如下规则确定:
- 如果 为偶数,则 为 ;
- 如果 为奇数,则 为 。
现在给定一个长度为 的目标校验串 。你需要构造一个排列,使它生成的校验串 恰好等于 。
如果存在多个满足要求的排列,请输出字典序最小的一个。对于两个不同排列 与 ,若存在位置 ,使得前 个数都相同且 ,则称排列 的字典序小于排列 。
如果不存在满足要求的排列,请输出 。
输入格式
第一行包含一个整数 ,表示编号数量。
第二行包含一个长度为 的字符串 ,表示目标校验串,字符串仅由字符 和 组成。
输出格式
如果不存在满足要求的排列,输出一行一个整数 。
否则输出一行 个整数,表示字典序最小的合法排列。相邻两个整数之间用一个空格分隔。
5
1010
1 2 4 3 5
6
00000
-1
8
0101101
1 3 2 4 5 6 8 7
提示
【样例说明 1】
该排列对应的相邻差值依次为:
- ,为奇数,对应 ;
- ,为偶数,对应 ;
- ,为奇数,对应 ;
- ,为偶数,对应 。
因此生成的校验串为 。在所有合法排列中, 的字典序最小。
【样例说明 2】
目标校验串的每一位都是 ,因此任意相邻两个编号的差值都必须为偶数,也就是它们奇偶性相同。这样所有位置上的编号都必须具有相同奇偶性,但 到 中既有奇数也有偶数,所以无解。
【样例说明 3】
输出排列生成的校验串依次为 、、、、、、,与目标校验串 相同。
【评测用例规模与约定】
对于 的评测用例,。
对于 的评测用例,。
对于所有评测用例,,且 的长度为 。