#6990. D - 面对面的两人(Pairs)

D - 面对面的两人(Pairs)

D - 面对面的两人(Pairs)

比赛来源: JOI 2026/2027 第一次预选赛(第 2 回)

时间限制: 2 秒 内存限制: 1024 MiB


题目描述

有一个由 (H) 行、(W) 列组成的网格。

我们将从上往下数第 (i) 行、从左往右数第 (j) 列的格子记作 ((i,j))。

每个格子中恰好有 1 个人。

位于格子 ((i,j)) 中的人的朝向用字符 (A_{i,j}) 表示。

根据 (A_{i,j}) 的取值,该人的朝向如下:

  • L:朝左。
  • R:朝右。
  • U:朝上。
  • D:朝下。

如果两个人所在的格子在上下方向或左右方向上相邻,并且两个人都朝向对方所在的方向,那么称这两个人是面对面的。

请计算整个网格中共有多少对面对面的人。

输入格式

输入按照以下格式给出:

H W
A_1
A_2
...
A_H

其中,(A_i) 为一个长度为 (W) 的字符串,表示第 (i) 行所有人的朝向。

输出格式

输出一个整数,表示整个网格中面对面的两人共有多少对。

除答案外,不要输出任何其他内容。

输入输出样例 #1

输入

3 3
RLR
RDU
LUD

输出

2

样例解释

位于格子 ((1,1)) 的人朝右,位于格子 ((1,2)) 的人朝左,因此这两个人面对面。

同样,位于格子 ((2,2)) 的人朝下,位于格子 ((3,2)) 的人朝上,因此这两个人也面对面。

所以,整个网格中共有 2 对面对面的人,输出 2。

输入输出样例 #2

输入

2 4
LUUR
DLRD

输出

0

样例解释

不存在任何一对面对面的人。

因此输出 0。

输入输出样例 #3

输入

5 1
L
R
D
D
U

输出

1

样例解释

位于格子 ((4,1)) 的人和位于格子 ((5,1)) 的人面对面。

因此输出 1。

数据范围

对于所有测试数据,保证:

  • (H)、(W) 均为整数。 -(Ai,j (A_{i,j}) 为 L、R、U、D 中的一个字符,其中 (1≤i≤H),(1≤j≤W)(1\le i\le H),(1\le j\le W)。

注: 由于提供的原文中部分数学公式丢失,(H)、(W) 的具体取值范围暂未恢复。


测试点编号 层级 H W 横向 RL 纵向 D→U 标准输出 设计目的
1 弱数据 1 1 0 0 0 检查最小网格
2 2 1 1 检查单个横向匹配
3 2 1 0 1 检查单个纵向匹配
4 基础数据 4 0 0 检查方向相反或不相邻时不计数
5 1 8 4 4 检查同一行连续出现多个 RL
6 正常数据 6 4 0 12 检查多组相邻行的纵向匹配
7 3 2 4 检查横向、纵向结果共同累计
8 较强数据 4 6 5 6 11 检查多行混合模式和边界列
9 边界数据 2 1000 0 1000 检查最大宽度下整行纵向匹配
10 极限数据 1000 250000 500000 检查大网格、流式读行和两类计数叠加