luogu#P11426. [清华集训 2024] 比赛

[清华集训 2024] 比赛

题目描述

nn 名选手,编号分别为 1,2,,n1, 2, \dots, n。编号为 ii 的选手的实力值为 ii。所有选手分为红、蓝两队,其中编号为 ii 的选手所在的队伍用字符 sis_i 描述。sis_iR 表示他在红队,sis_iB 表示他在蓝队。

现在将所有选手排成一个环,每一对相邻且不属于同一队的选手会进行一场比赛,实力值较大的选手获胜,他所在的队伍的得分增加一。

然而,蓝队的选手勾结了裁判,如果一场比赛中红队选手获胜,且他在蓝队选手的顺时针方向上,则这场比赛不计入得分。

现在你想知道,对于每个 k=n,,1,0,1,,nk = -n, \dots, -1, 0, 1, \dots, n,有多少种将选手排列的方法,使得红队得分恰好比蓝队得分大 kk。两种方案不同,当且仅当存在某个选手,使得他顺时针方向的下一个选手在两个方案中不同。

由于答案很大,你只需要输出答案对 998,244,353998,244,353 取模后的值。

输入格式

从标准输入读入数据。

第一行包含一个整数 nn,表示选手个数。

第二行包含一个长度为 nn 的字符串 s1s2sns_1s_2 \dots s_n,表示每个选手所属的队伍。

输出格式

输出到标准输出。

输出一行 2n+12n + 1 个整数,分别表示 k=n,,0,,nk = -n, \dots, 0, \dots, n 的方案数对 998,244,353998,244,353 取模后的值。

3
BRB
0 0 1 1 0 0 0
5
RBBRR
0 0 0 0 8 8 8 0 0 0 0
见题目目录下的 3.in 与 3.ans。
见题目目录下的 3.in 与 3.ans。

提示

【样例 1 解释】

如图所示,共有两种排列的方法。

第一种排列中,选手 1122 之间的比赛虽然选手 22 获胜,但他属于红队,且在选手 11 顺时针方向,故这场比赛不计入得分。而选手 2233 之间的比赛蓝方获胜。因此红队得分为 00,蓝队得分为 11

第二种排列中,共进行两场比赛,且均计入得分。红队得分与蓝队得分均为 11

【子任务】

对于所有数据,满足 3n30003 \leq n \leq 3000ss 为由 BR 构成的字符串。

子任务编号 分值 nn
11 1010 17\le 17
22 30\le 30
33 50\le 50
44 200\le 200
55 4545 500\le 500
66 1515 3000\le 3000