CF1333D Challenges in school №41
题目描述
有 $n$ 个孩子在 41 号学校上学。众所周知,他们都是优秀的数学家。一次课间休息时,他们为自己安排了一个挑战。所有孩子排成一排,头要么向左看,要么向右看。
孩子们可以进行如下操作:在一秒钟内,若干对相邻且互相对视的孩子可以同时把头转向相反的方向。例如,原本看向右边邻居的孩子转向左边,反之亦然。此外,每一秒至少有一对相邻的孩子进行这样的操作。当没有任何一对相邻的孩子互相对视时,过程结束。
给定 $n$、孩子们的初始排列和数字 $k$。你需要找到一种操作方式,使得孩子们恰好在 $k$ 秒后完成整个过程。更正式地说,对于每一次操作,你需要输出在该次操作中向左转头的孩子的编号。
例如,对于下图所示的初始状态和 $k=2$,孩子们可以按如下步骤操作:

一开始有两对孩子可以操作:$(1,2)$ 和 $(3,4)$。操作后得到如下状态:

第二步,$(2,3)$ 这一对孩子进行操作,最终状态如下:

保证如果有解,所需的“转头”次数不会超过 $n^2$。
输入格式
输入的第一行包含两个整数 $n$ 和 $k$($2 \le n \le 3000$,$1 \le k \le 3000000$),分别表示孩子的数量和需要的操作次数。
第二行是一个长度为 $n$ 的字符串,仅包含字符 L 和 R,L 表示孩子向左看,R 表示孩子向右看。
输出格式
如果无解,输出一行 $-1$。
否则,输出 $k$ 行。每行首先输出一个整数 $n_i$($1 \le n_i \le \frac{n}{2}$),表示本次操作中有多少对孩子进行转头。接下来输出 $n_i$ 个不同的整数,表示本次操作中向左转头的孩子的编号。
所有“转头”操作完成后,相邻的孩子中不能再有互相对视的情况。
如果有多种方案,输出任意一种均可。
说明/提示
第一个样例中有一对孩子互相对视,一次操作即可完成。
第二个样例中,孩子们无法进行任何操作,因此对于 $k>0$ 无法完成。
第三个样例已在题目描述中给出。
由 ChatGPT 4.1 翻译