AT_agc076_b.[AGC076B] Split and Reverse
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 N 的整数序列 X=(X1,X2,⋯,XN),其中每个元素均为 0 或 1。
你可以执行以下操作任意次(包括零次):
- 将 X 的每个元素划分到组
A或组B。对每一组,将其包含的元素整体翻转顺序。更正式地说,若某组包含的元素为 Xi1,Xi2,⋯,Xis(i1<i2<⋯<is),则对所有 1≤j≤s,同时将 Xij 替换为 Xis+1−j。
你的目标是将 X 变为非递减序列。请找出达到该目标所需的最少操作次数以及具体的操作方式。在本题的限制下,可以保证一定存在解。
对于一组输入,请解决 T 个测试用例。
输入格式
输入通过标准输入给出,格式如下:
T case1 case2 ⋮ caseT
每个测试用例如下格式:
N X1 X2 ⋯ XN
输出格式
对于每个测试用例,输出如下格式:
k s1 s2 ⋮ sk
其中,k 表示所需的最少操作次数,si 是表示第 i 次操作的字符串。si 是由 A 和 B 组成的长度为 N 的字符串,第 j 个字符表示本次操作中 Xj 分到哪个组。如果有多组解,输出任意一种都可以。
输入输出样例
输入#1
2 4 0 1 0 1 5 0 0 1 1 1
输出#1
2 AABA BBBB 0
说明/提示
样例解释 1
对于第一个测试用例,可以通过如下两步达到目标,这也是最少的操作次数:
- 第一步操作:使用 s1=
AABA。由于 (X1,X2,X4) 被分入组A,翻转其顺序后得到 (X1,X2,X4)=(1,1,0)。而 (X3) 被分入组B,翻转后还是 (0)。因此总体得到 X=(1,1,0,0)。 - 第二步操作:使用 s2=
BBBB。此时组A为空,翻转无影响。(X1,X2,X3,X4) 全部分到组B,翻转后序列变为 (0,0,1,1),因此 X=(0,0,1,1)。
对于第二个测试用例,可以不进行任何操作。
约束条件
- 1≤T≤250000
- 1≤N≤250000
- 0≤Xi≤1
- 所有 T 个测试用例的 N 之和不超过 250000。
- 所有输入值均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?