uoj#P931. 【清华集训2024】比赛
【清华集训2024】比赛
有 $n$ 名选手,编号分别为 $1, 2, \dots, n$。编号为 $i$ 的选手的实力值为 $i$。所有选手分为红、蓝两队,其中编号为 $i$ 的选手所在的队伍用字符 $s_i$ 描述。$s_i$ 为 R 表示他在红队,$s_i$ 为 B 表示他在蓝队。
现在将所有选手排成一个环,每一对相邻且不属于同一队的选手会进行一场比赛,实力值较大的选手获胜,他所在的队伍的得分增加一。
然而,蓝队的选手勾结了裁判,如果一场比赛中红队选手获胜,且他在蓝队选手的顺时针方向上,则这场比赛不计入得分。
现在你想知道,对于每个 $k = -n, \dots, -1, 0, 1, \dots, n$,有多少种将选手排列的方法,使得红队得分恰好比蓝队得分大 $k$。两种方案不同,当且仅当存在某个选手,使得他顺时针方向的下一个选手在两个方案中不同。
由于答案很大,你只需要输出答案对 $998,244,353$ 取模后的值。
输入格式
从标准输入读入数据。
第一行包含一个整数 $n$,表示选手个数。
第二行包含一个长度为 $n$ 的字符串 $s_1s_2 \dots s_n$,表示每个选手所属的队伍。
输出格式
输出到标准输出。
输出一行 $2n + 1$ 个整数,分别表示 $k = -n, \dots, 0, \dots, n$ 的方案数对 $998,244,353$ 取模后的值。
3
BRB
0 0 1 1 0 0 0
如图所示,共有两种排列的方法。
第一种排列中,选手 $1$ 与 $2$ 之间的比赛虽然选手 $2$ 获胜,但他属于红队,且在选手 $1$ 顺时针方向,故这场比赛不计入得分。而选手 $2$ 和 $3$ 之间的比赛蓝方获胜。因此红队得分为 $0$,蓝队得分为 $1$。
第二种排列中,共进行两场比赛,且均计入得分。红队得分与蓝队得分均为 $1$。
5
RBBRR
0 0 0 0 8 8 8 0 0 0 0
样例 3
见题目目录下的 3.in 与 3.ans。
数据范围
对于所有数据,满足 $3 \leq n \leq 3000$,$s$ 为由 B 和 R 构成的字符串。
| 子任务编号 | 分值 | $n$ |
|---|---|---|
| $1$ | $10$ | $\le 17$ |
| $2$ | $10$ | $\le 30$ |
| $3$ | $10$ | $\le 50$ |
| $4$ | $10$ | $\le 200$ |
| $5$ | $45$ | $\le 500$ |
| $6$ | $15$ | $\le 3000$ |