B. 折返的粒子

折返的粒子

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目内容

在一个 nn 行 mm 列的矩形网格中,有一个粒子从某个格子沿对角线方向开始移动。粒子每秒移动一个格子,到达相邻的对角格子。当粒子碰到网格边界时会发生镜面反射,方向改变,参考下图:

image

粒子不断行进,永不停止。初始方向用长度为 22 的字符串给出,由字母 D(向下)、U(向上)、R(向右)、L(向左)组合而成,具体为 DR(右下)、DL(左下)、UR(右上)、UL(左上)之一。

给定网格大小、粒子的初始位置和初始方向,请你计算经过多少秒后粒子会首次回到初始格子(初始瞬间不计)。若粒子永远无法回到初始格子,则认为答案为 −1-1。

约束:

  • 1≤n,m≤20001 \le n, m \le 2000
  • 初始行号和列号均从 11 开始计数,行号在 11 到 nn 之间,列号在 11 到 mm 之间。
  • 方向 d∈{DR,DL,UR,UL}d \in \{\text{DR}, \text{DL}, \text{UR}, \text{UL}\}。

输入描述

第一行包含两个整数 nn 和 mm,分别表示网格的行数和列数。 第二行包含两个整数 rr 和 cc 以及一个长度为 22 的字符串 dd,表示粒子的初始行号、列号和方向。

输出描述

输出一个整数,表示粒子首次回到初始格子经过的秒数。若永远无法回到,则输出 −1-1。

样例1

输入

3 3
2 2 DR

输出

2

说明

网格大小为 3×33 \times 3,粒子从 (2,2)(2,2) 出发,初始方向为右下(DR)。第 1 秒粒子移动到 (3,3)(3,3) 并同时碰到下边界与右边界,发生镜面反射,方向变为左上(UL);第 2 秒由 (3,3)(3,3) 沿左上方向移动回 (2,2)(2,2),首次回到初始格子。因此答案为 2。

样例2

输入

3 4
1 1 UL

输出

12

说明

网格大小为 3×43 \times 4,粒子初始位于 (1,1)(1,1),方向为左上(UL)。由于起点恰在左上角,粒子瞬间受到上边界和左边界的反弹,实际运动方向变为右下(DR)。后续路径依次为:(1,1)→(2,2)→(3,3)→(2,4)→(1,3)→(2,2)→(3,1)→(2,2)→(1,3)→(2,4)→(3,3)→(2,2)→(1,1)(1,1) \to (2,2) \to (3,3) \to (2,4) \to (1,3) \to (2,2) \to (3,1) \to (2,2) \to (1,3) \to (2,4) \to (3,3) \to (2,2) \to (1,1)。全程共经过 12 秒后首次回到起点。

样例3

输入

4 2
3 2 DR

输出

2

说明

网格大小为 4×24 \times 2,粒子从 (3,2)(3,2) 以右下方向(DR)出发。初始即位于右边界,因此立即反弹,实际初方向变为左下(DL)。第 1 秒到达 (4,1)(4,1),同时碰下边界和左边界,方向变为右上(UR);第 2 秒从 (4,1)(4,1) 移动到 (3,2)(3,2),回到起点。答案为 2。

春招模拟赛第六场|Ant|2023.04.11研发岗笔试

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2023-4-16 19:00
End at
2023-4-16 20:20
Duration
1.3 hour(s)
Host
Partic.
91