CF606B Testing Robots

题目描述

“Cybernetics Failures”(CF)组织开发了一款炸弹拆除机器人原型。为了找出可能存在的问题,决定进行一系列的测试。每次测试开始时,机器人原型会被放置在一个大小为 $x×y$ 的矩形方格场地的 $(x_{0},y_{0})$ 单元格中,随后会在场地的某一个未被使用过的格点安装一颗地雷。总共需要进行恰好 $x·y$ 次测试,每次地雷都安装在一个此前未被用作地雷位置的格子上。机器人的起始位置每次都保持不变。 布置好物品后,机器人需要执行由字符串 $s$ 给出的命令序列,字符串 $s$ 只包含字符 ‘L’,‘R’,‘U’,‘D’。这些命令分别指示机器人向左、向右、向上或向下移动一格;如果指定方向无法移动(超出边界),机器人保持静止。一旦机器人执行完全部命令序列,它会因为代码中的 Bug 而爆炸。但是,如果在某一时刻机器人和地雷处于同一格子,也会立即爆炸,但这不是代码 Bug 导致的。 向左移动会使 $y$ 坐标减小,向右移动会使 $y$ 坐标增加。类似地,向上移动会使 $x$ 坐标减小,向下移动会使 $x$ 坐标增加。 由于测试次数很大,你的任务是预测各个测试结果。对于每一个 $k$,其中 $0 \leq k \leq \text{length}(s)$,请你统计有多少次测试中,机器人正好在执行第 $k$ 条指令后(即执行了 $k$ 条命令)爆炸。

输入格式

输入的第一行包含四个整数 $x$、$y$、$x_{0}$、$y_{0}$,表示场地的大小和机器人的起始位置。 $1 \leq x,y \leq 500$,$1 \leq x_{0} \leq x$,$1 \leq y_{0} \leq y$。$X$ 轴方向向下,$Y$ 轴方向向右。 第二行包含一个由字符 ‘L’, ‘R’, ‘U’, ‘D’ 构成的命令序列 $s$(长度为 $1$ 到 $100000$)。

输出格式

输出 $(\text{length}(s)+1)$ 个整数组成的序列。在第 $k$ 个位置(从 $0$ 开始),输出有多少次测试中机器人正好执行了 $k$ 条命令后爆炸。

说明/提示

在第一个样例中,如果不考虑地雷的影响,机器人的运动轨迹如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF606B/e99fac597a94e8717379dd6864b302ee973d5867.png)。 由 ChatGPT 5 翻译