AT_agc037_b [AGC037B] RGB Balls
题目描述
有 $3N$ 个带颜色的球,每个球编号从 $1$ 到 $3N$。每个球的颜色由长度为 $3N$ 的字符串 $S$ 表示,第 $i$ 个球的颜色为 $S_i$,若 $S_i$ 为 `R` 则为红色,`G` 为绿色,`B` 为蓝色。红色、绿色、蓝色的球各有 $N$ 个。
高桥君要将这 $3N$ 个球分给 $N$ 个人,使得每个人都能分到一个红球、一个绿球和一个蓝球。此外,分配还需满足以下条件:
- 对于第 $j$ 个人,设他拿到的球的编号按升序为 $a_j < b_j < c_j$。
- 使得 $\sum_j (c_j - a_j)$ 的值尽可能小。
请你计算高桥君有多少种分配球的方法。由于答案可能很大,请输出对 $998244353$ 取模的结果。若存在某个人分到的球的集合不同,则认为两种分配方法不同。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $S$
输出格式
输出高桥君分配球的方法数对 $998244353$ 取模的结果。
说明/提示
## 限制条件
- $1 \leq N \leq 10^5$
- $|S| = 3N$
- $S$ 仅由 `R`、`G`、`B` 组成,且每种颜色在 $S$ 中各出现 $N$ 次
## 样例解释 1
例如如下分配方式可以使 $\sum_j (c_j-a_j)$ 的值最小,为 $18$:
- 第 $1$ 个人分到编号为 $1,5,9$ 的球。
- 第 $2$ 个人分到编号为 $2,4,8$ 的球。
- 第 $3$ 个人分到编号为 $3,6,7$ 的球。
由 ChatGPT 4.1 翻译