CF294D Shaass and Painter Robot

题目描述

Shaass 觉得全是白色地砖的厨房地板太单调了。他的厨房地板由 $n \cdot m$ 块正方形地砖组成,形成一个 $n \times m$ 的矩形。因此他决定把一些地砖涂成黑色,使地面看起来像一个国际象棋盘,即任意两个相邻的地砖都不能有相同的颜色。 Shaass 想用一个绘图机器人来涂色地砖。开始时,机器人站在边界上的地砖 $(x_{s},y_{s})$,面向一个对角线方向(即左上、右上、左下或右下)。机器人在厨房里行走时,会把它经过的每块地砖都涂成黑色,即使之前已经上过色。每涂一块地砖会消耗一单位的黑色油漆。如果机器人碰到了厨房的墙壁,它会按照反射的规则改变方向。注意,机器人只有在从一个地砖走入另一个地砖时才涂色,在同一块地砖上改变方向并不会导致涂色。机器人最初所站的第一块地砖也会被涂色。 机器人在地板首次变成棋盘格时就会停止作业。给定厨房的尺寸以及机器人的初始位置,计算机器人在停止之前耗费了多少油漆。 下面是一个示例: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF294D/9a76f461f123d79b09ad121ee5e2505584689476.png) 如果机器人从左图的1号地砖(即 $(1,1)$)开始,朝右下(down-right)行进,它会经过 1、3、5、4、2、3、6 号地砖,在此过程中消耗7单位油漆,最终在6号地砖处停止。但如果它从右图的1号地砖开始,朝右下方行进,则会在1、2、3号地砖之间陷入循环。

输入格式

第一行包含两个整数 $n$ 和 $m$,$(2\leq n,m\leq 10^{5})$。 第二行包含两个整数 $x_{s}$ 和 $y_{s}$,$(1\leq x_{s}\leq n, 1\leq y_{s}\leq m)$,以及机器人的初始方向。方向是以下字符串之一:"UL"(左上)、"UR"(右上)、"DL"(左下)或 "DR"(右下)。 注意,$(x_{s}, y_{s})$ 表示厨房自上而下第 $x_{s}$ 行、从左到右第 $y_{s}$ 列的地砖。 保证初始位置一定是边界地砖(也就是与边相邻的地砖,拥有少于四个相邻地砖)。

输出格式

输出机器人为了让厨房地板变为棋盘格所消耗的油漆总量。如果永远无法达到棋盘格效果,则输出 $-1$。 请不要用 %lld 格式读写 64 位整数。建议使用 cin、cout 流或者 %I64d 格式。

说明/提示

由 ChatGPT 5 翻译