1 条题解
-
0
C. 箭头路径 详细题解
题目核心理解
有一个 行 列的网格,每个格子有向左
<或向右>的箭头,且箭头不会指向网格外。 机器人从格子 出发,每一秒按顺序执行两步:- 先自主向上下左右某一方向移动一格(不能出界、不能不动);
- 再沿着当前所在格子的箭头方向移动一格。
问机器人是否可以到达终点 。
核心思路
1. 关键性质
按格子坐标 的和 的奇偶性,把格子分为两类:
- 偶格: 为偶数,只能在箭头移动后停留;
- 奇格: 为奇数,只能在自主移动后停留。 机器人始终在两类格子之间交替到达,不会停留在同类格子。
2. 判定规则
唯一会卡死机器人的情况: 存在偶数列 ,满足同一列的两个奇格 和 内的箭头都是向左
<。 只要出现这样一对位置,答案就是 ; 其余所有情况都可以顺利走到终点,答案为 。
算法流程
- 读入 以及两行箭头字符串;
- 遍历所有偶数列(下标从 开始时为 );
- 若某一列中两个字符均为
<,直接判定无解; - 遍历完成未发现卡死点,则判定有解。
公式与复杂度分析
无解判定条件:
$$\exists c \text{ 为偶数},\ \ s_1[c] = \texttt{<}\ \ \text{且}\ \ s_2[c] = \texttt{<} $$复杂度
每组测试用例只需要一次线性遍历。 时间复杂度:。 总复杂度满足 ,可在时限内轻松运行。
- 1
信息
- ID
- 6575
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者