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 翻译