题目大意
题目描述
在一个圆上有 只蚂蚁。圆被顺时针划分为 个位置,编号为 到 ,其中位置 与位置 相邻。
每只蚂蚁初始站在不同的位置上,并且都需要到达各自不同的目标位置。
在每一秒内,每只蚂蚁可以选择:
-
停留在原地。
-
顺时针或逆时针移动到相邻的位置。
在任何时刻(包括在两个位置之间移动的过程中),任意两只蚂蚁都不能处于同一个位置。例如,如果某只蚂蚁在某一秒内顺时针从位置 移动到位置 ,那么在同一秒内,其他蚂蚁不能进行以下操作:
-
停留在位置 (这会导致两只蚂蚁在位置 相遇)。
-
逆时针从位置 移动到位置 (这会导致两只蚂蚁在位置 相遇)。
-
逆时针从位置 移动到位置 (这会导致两只蚂蚁在位置 和位置 之间相遇)。
你需要判断是否有可能让所有蚂蚁都到达各自的目标位置。如果可以,求出所需的最短时间(秒数)。
输入格式
第一行包含两个整数 ()和 (),分别表示蚂蚁的数量和位置的总数。
第二行包含 个互不相同的整数 (),表示每只蚂蚁的初始位置。
第三行包含 个互不相同的整数 (),表示每只蚂蚁的目标位置。
输出格式
输出一行,包含一个整数,表示所有蚂蚁到达目标位置所需的最短时间。如果无论如何都无法全部到达目标位置,则输出星号 *。
样例展示与解释
样例 1
输入:
1 | 2 2 |
输出:
1 | 0 |
样例 1 解释:两只蚂蚁初始就已经在各自的目标位置上,因此需要 秒。
样例 2
输入:
1 | 2 2 |
输出:
1 | 1 |
样例 2 解释:两只蚂蚁可以同时顺时针(或同时逆时针)移动,仅需 秒即可到达目标位置。
样例 3
输入:
1 | 1 10 |
输出:
1 | 4 |
样例 4
输入:
1 | 3 5 |
输出:
1 | * |
样例 5
输入:
1 | 3 5 |
输出:
1 | 2 |
样例 5 解释:三只蚂蚁都可以选择逆时针移动,其中第二只蚂蚁需要在中途停留一秒。
思路讲解

为什么这道题目可以枚举在哪里切一刀呢?
当然,你可能会说,这样子枚举的正确性在哪里?具体而言,我们想问的就是,任何一种合法的,不浪费的走法,都一定可以投影到这个线段上吗?
AC代码
1 |