D. 跳棋(8-4)

    传统题 文件IO:checkers 1000ms 256MiB

跳棋(8-4)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

大维在一条线段上玩跳棋,棋子可以通过“跳跃”和“翻滚”两种操作来移动。现在线上有 3 颗棋子,初始位置已知,大维想知道将它们移动到指定的三个目标位置至少需要多少步操作。

题目描述

在长度为 nn 的线段 [1,n][1,n] 上,有 3 颗棋子,初始位置分别是 a,b,ca,b,c(三者两两不同)。棋子可以进行以下两种操作:

跳跃:

  1. 若在位置 iii+xi+xx0x\neq 0)各有一颗棋子,且区间 (min(i,i+x),max(i,i+x))(\min(i,i+x),\max(i,i+x)) 内都没有其他棋子,则位于 ii 处的棋子可以直接跳到 i+xi+x 处,视为跳跃了一步。

  2. j=i+xj = i + xk=j+xk = j + x。若在位置 jjkk 各有一颗棋子,且区间 (min(j,k),max(j,k))(\min(j,k),\max(j,k)) 内都没有其他棋子,且 1i,j,kn1\le i,j,k\le n,则位于 kk 处的棋子可以先跳到 jj(即 kxk - x)处,再跳到 ii(即 k2xk - 2x)处,同样视为跳跃了一步。当 x<0x<0 时规则相同。

翻滚:

若在位置 ii 有一颗棋子,且 i+1i+1(或 i1i-1)位于 [1,n][1,n] 且该处没有棋子,则该棋子可滚动一格到 i+1i+1(或 i1i-1),视为翻滚了一步。

现在线段 [1,n][1,n] 上有 3 颗棋子,位置分别是 a,b,ca,b,c。大维想知道,将这 3 颗棋子移动到给定的 3 个目标位置(不区分棋子之间的对应关系)最少需要操作多少步?

输入格式

第一行输入一个正整数 TT,表示测试数据的组数。
每组数据包含两行:
第一行包含一个整数 nn,表示线段右端点。
第二行包含三个互不相同的整数 a,b,ca,b,c,表示三颗棋子的初始位置。

输出格式

对于每组测试数据,输出一个整数,表示将三颗棋子移动到任意三个位于 [1,n][1,n] 且互不相同的位置所需的最少操作步数。

样例

3
4
1 2 4
4
1 3 4
5
2 4 5
1
1
2

样例解释

第 1 组:将位置 4 上的棋子翻滚到位置 3,即可得到目标位置 {1,2,3}\{1,2,3\},共 1 步。
第 2 组:令 x=1x=-1,位置 3 和 4 各有棋子,且区间 (3,4)(3,4) 内无其他棋子,按照跳跃规则中的“二次跳”操作,位置 4 上的棋子先跳到 3,再跳到 2,视为一步跳跃,得到目标 {1,2,3}\{1,2,3\}
第 3 组:先令 x=1x=-1,位置 4、5 各有棋子,位置 5 的棋子跳跃到位置 3;然后将位置 4(此时已变为有棋子)的棋子翻滚到位置 3,得到 {1,2,3}\{1,2,3\},共 2 步。

数据范围

对于 20% 的数据,n10n \le 10
对于 另外 40% 的数据,n103n \le 10^3
对于 另外 30% 的数据,n105n \le 10^5
其余数据,n106n \le 10^6

CSP-J 模拟赛6

未参加
状态
已结束
规则
OI
题目
4
开始于
2025-10-13 17:00
结束于
2025-10-16 18:00
持续时间
3.5 小时
主持人
参赛人数
9