#618. ROG

    ID: 618 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 3 上传者: 标签>基础算法前缀和枚举二维前缀和

ROG

题目描述

给定一个大小为 n×mn\times m 的字符矩阵(仅包含大写英文字母)。

我们把由三个不同字符组成的字符串称为“幸运字符串”。在该矩阵中,如果三个字符分别为 RROOGG,且它们的位置为 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)(x3,y3)(x_3,y_3),并满足

$$x_1\le x_2\le x_3\quad\text{且}\quad y_1\le y_2\le y_3, $$

则称该字符串为一个“ROGROG 幸运字符串”。

请计算矩阵中满足上述条件的所有 ROGROG 幸运字符串的个数。由于结果可能很大,最终答案需对 998244353998244353 取模。

以下为示例矩阵的逐项列举(保持原题文字内容,仅格式化):

以下面矩阵为例:

RAG
OGR
ROG

满足条件的 ROGROG 三元组有以下 4 种:

  1. (1,1)(2,1)(3,3)(1,1)\to(2,1)\to(3,3),坐标分别为 (1,1),(2,1),(3,3)(1,1),(2,1),(3,3),对应字符为 R, O, GR,\ O,\ G
  2. (1,1)(3,2)(3,3)(1,1)\to(3,2)\to(3,3),坐标分别为 (1,1),(3,2),(3,3)(1,1),(3,2),(3,3),对应字符为 R, O, GR,\ O,\ G
  3. (1,1)(2,1)(2,2)(1,1)\to(2,1)\to(2,2),坐标分别为 (1,1),(2,1),(2,2)(1,1),(2,1),(2,2),对应字符为 R, O, GR,\ O,\ G
  4. (3,1)(3,2)(3,3)(3,1)\to(3,2)\to(3,3),坐标分别为 (3,1),(3,2),(3,3)(3,1),(3,2),(3,3),对应字符为 R, O, GR,\ O,\ G

总计 44 种。

输入格式

第一行包含两个整数 n, mn,\ m,表示字符矩阵的行数和列数。

接下来的 nn 行,每行是一个长度为 mm 的字符串,表示矩阵的一行,字符串仅由大写英文字母构成。

下标与坐标约定为:矩阵第一行为 x=1x=1,第一列为 y=1y=1

输出格式

输出一个整数,表示满足条件的 ROGROG 幸运字符串的个数(对 998244353998244353 取模)。

样例输入

3 3
RAB
OOO
GGG

样例输出

6

说明

数据范围

  • 1n,m20001\le n,m\le 2000