#HK6982. 「ICPC World Finals 2024」我现在在哪里?
「ICPC World Finals 2024」我现在在哪里?
题目描述
我是谁?我是何物?为何存在?这些都是过去几千年让哲学家们忙碌不休的难题。但说到「我在哪里?」这个问题,嗯,现代智能手机和 GPS 卫星已经让它变得索然无味。
但如果你手头没有 GPS 呢?在 2021 年世界决赛的一道题目中,瞬时制图定位公司(ICPC)展示了一种通过螺旋移动和观察周围环境来确定当前位置的方法。不幸的是,他们的方法只能在没有障碍物的开阔区域使用。如果需要在封闭空间中确定你的确切位置,你该怎么办呢?现在是时候找答案了。
你会得到一个由单位方格组成的区域地图,每个方格要么是开放的,要么被墙占用。一开始,你被放置在其中一个开放的单位方格中,但你不知道自己具体在哪个方格,也不知道自己面向哪个方向。任何两个独立的开放空间是无法区分的,墙也是如此。你可以在区域内走动,每一步观察你面向方向上到下一堵墙的距离。目标是确定你在地图上的确切位置。
交互方式
输入的第一行包含两个整数 和 ,指定地图的大小。接下来有 行,每行包含 个字符。每个字符要么是一个点(.),表示开放的方格;要么是一个井号(#),表示被墙占用的方格。
地图上至少有一个方格是开放的。你知道自己从地图上的某个开放方格开始,面向四个基本方向之一,但你的位置和方向未在输入中给出。地图区域外的所有方格都被视为墙。
交互随后以轮次进行。每一轮会提供一行输入,包含一个整数 ,表示你看到前方距离 处有一堵墙。这意味着在你当前方向上,你所在的方格与最近的墙之间恰好有 个开放方格。然后你应输出一行,内容如下之一:
left:向左旋转 90 度,right:向右旋转 90 度,step:在当前方向上前进一步,yes i j:声明你当前的位置是第 行第 列 ,no:声明无论你做什么,都无法可靠地确定你的位置。
如果你输出 yes 或 no,交互将停止,你的程序应终止。否则,将开始新一轮交互。为了获得 AC,你不能走进墙内,并且最多只能进行 轮交互(最后一轮仅报告 yes 或 no 也计入此限制)。
样例 1
| 输入 | 输出 |
|---|---|
3 3##.#.....1 |
|
right |
|
1 |
|
step |
|
0 |
|
left |
|
0 |
|
right |
|
0 |
|
right |
|
1 |
|
yes 2 2 |
样例 2
| 输入 | 输出 |
|---|---|
3 5##.#####.#.#.##0 |
|
left |
|
0 |
|
no |
样例 3
| 输入 | 输出 |
|---|---|
2 1#.0 |
|
yes 2 1 |