AT_ahc046_a.[AHC046A] Skating with Blocks
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个由 N×N 个格子组成的滑冰场。左上角格子的坐标为 (0,0),向下 i 格、向右 j 格的位置坐标为 (i,j)。N×N 格子的外部全部被障碍物包围,无法通过。初始状态下,N×N 格子内部没有任何障碍物。
你现在位于初始位置 (i0,j0),需要按顺序依次访问指定的目的地 (i1,j1), (i2,j2), …, (iM−1,jM−1)。
每一回合,你可以指定一个方向(上下左右),并选择以下三种操作之一执行:
- 移动:向指定方向相邻的格子移动一格。移动目标格子不能有障碍物。
- 滑行:向指定方向直线滑行,直到撞到障碍物为止。
- 更改:对指定方向相邻的格子,如果没有障碍物则放置一个障碍物,如果已经有障碍物则移除。不能指定 N×N 格子的外部。你也可以在当前或未来的目的地上放置障碍物,但那样的话,必须先移除障碍物才能访问该格子。
如果通过“滑行”经过了目的地,并不会视为访问了该格子。只有通过“移动”到达该格子,或“滑行”并在该格子停下,才算访问了目的地。
必须按照指定顺序访问所有目的地。如果提前经过了后面的目的地,并不会视为访问,等到轮到该目的地时还需要重新访问。
最多可以执行 2NM 回合操作。请尽可能用最少的回合数,按顺序访问所有目的地。
输入格式
输入通过标准输入按以下格式给出。
N M i0 j0
i1 j1
⋮
iM−1 jM−1
- 所有测试点中,N=20,M=40。
- 初始位置和所有目的地的坐标 (ik,jk) 满足 0≤ik,jk≤N−1,且两两不同。
输出格式
每一回合选择的操作和方向,分别用一个字母表示。
操作
- 移动:
M - 滑行:
S - 更改:
A
方向
- 上:
U - 下:
D - 左:
L - 右:
R
第 t 回合(t=0,1,…,T−1)的操作和方向分别为 at、dt,请按如下格式输出到标准输出。
a0 d0
a1 d1
⋮
aT−1 dT−1
输入输出样例
输入#1
20 40 3 7 14 16 19 19 0 8 0 10 17 11 11 7 19 12 10 12 5 4 13 5 19 10 19 14 1 19 8 5 6 9 9 3 10 0 8 7 17 17 4 2 1 13 9 17 13 4 9 14 19 13 16 9 8 17 10 18 14 3 14 13 18 19 3 14 8 13 7 9 12 18 8 6 10 7 12 1 5 17
输出#1
S D M U A D M U M U M U M U S R M L M L M L S D S R S L S U M R M R
说明/提示
得分
设输出的操作序列长度为 T,成功访问的目的地数量为 m,则得分如下:
- 若 m<M−1,得分为 m+1。
- 若 m=M−1,得分为 M+2NM−T。
总共有 150 个测试用例,所有测试用例的得分之和为最终提交得分。如果有任意一个测试用例输出不合法或超时,则整份提交判为 WA 或 TLE。比赛期间以最高得分决定最终排名,比赛结束后不进行系统测试。若多名参赛者得分相同,则排名相同,与提交时间无关。
输入生成方法
初始位置和目的地的生成方法如下:
首先将 N2 个格子的所有坐标随机排列。取排列后的前 M 个,依次作为 (i0,j0),(i1,j1),…,(iM−1,jM−1)。
工具(输入生成器与可视化工具)
- 网页版:比本地版性能更高,支持动画显示和手动操作。
- 本地版:需要Rust语言编译环境。
- Windows 版编译好的二进制文件:如果不方便搭建 Rust 环境可使用此版本。
比赛期间禁止分享可视化结果、讨论解法或思路。请注意遵守规则。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?