#1714. 机械臂

机械臂

题目描述:

某自动化实验室有 3 台型号不同的机械臂(记为 A、B、C),需在一条水平轨道上协作完成物料搬运任务。轨道以左侧固定端点为起点,按单位长度划分线段,线段端点设为定位点,编号从 1 开始依次递增(1、2、3……),任意两个定位点之间的距离等于其编号差值的绝对值。 初始时,3 台机械臂分别处于轨道上 3 个不同的定位点,且各自具备三项核心功能(每项功能最多执行 1 次): 自主移动:机械臂可在轨道上移动一段距离(不超过自身最大移动范围),但移动后必须停在无其他机械臂的定位点。 抓取协作:若机械臂 A 与机械臂 B 距离为 1(相邻定位点),且 A 未抓取其他机械臂、B 未被抓取,则 A 可抓取 B。抓取后,B 会移动至 A 的定位点(原 B 的定位点变为空),此时 B 无法执行任何操作,A 无法移动但可执行 “投掷” 操作。 投掷转运:抓取其他机械臂的机械臂,可将抓取的对象投掷至轨道上的空定位点(投掷距离不超过自身最大投掷范围)。 特殊协作场景:若机械臂 A 抓取机械臂 B,而 B 同时抓取机械臂 C,则三者会汇聚在 A 的定位点形成 “串联结构”(B 和 C 无法操作,仅 A 可执行投掷)。投掷后,B 和 C 仍保持串联状态,共同落在同一空定位点。 3 台机械臂的操作顺序可灵活调整,但同一时间仅允许 1 台机械臂执行操作。任务目标是通过合理规划操作流程,让 3 台机械臂最终所在定位点的编号尽可能大,需计算其中最大的定位点编号(即最终 3 个定位点编号的最大值)。

输入格式:

从文件 arm.in 中读取数据: 第 1 行:3 个整数,依次表示机械臂 A 的初始定位点编号、最大移动范围、最大投掷范围。 第 2 行:3 个整数,依次表示机械臂 B 的初始定位点编号、最大移动范围、最大投掷范围。 第 3 行:3 个整数,依次表示机械臂 C 的初始定位点编号、最大移动范围、最大投掷范围。 注:3 台机械臂初始定位点编号互不相同,所有输入整数均在 [1, 10] 范围内。

输出格式:

输出到文件 arm. out 中。 输出一行, 1 个整数,代表 3 台机械臂最终所在定位点的最大编号,答案mod 1e9+7后再输出。

样例:

9 3 3  (机械臂A:初始9,移动3,投掷3)
4 3 1  (机械臂B:初始4,移动3,投掷1)
2 3 3  (机械臂C:初始2,移动3,投掷3)

15
6 3 2  (机械臂A:初始6,移动3,投掷2)
3 2 3  (机械臂B:初始3,移动2,投掷3)
8 4 4  (机械臂C:初始8,移动4,投掷4)


18

提示

【样例 1 解释】 操作流程解释 机械臂 A 从初始定位点 9 移动到 6(移动距离 3,未超最大移动范围,且 6 为空)。 机械臂 C 从初始定位点 2 移动到 5(移动距离 3,未超范围),因与机械臂 B(位于 4)距离为 1,抓取 B(B 移动至 5,原 4 为空)。 机械臂 A(位于 6)与机械臂 C(位于 5)距离为 1,抓取 C(C 与 B 共同移动至 6,原 5 为空),随后将 C 和 B 投掷到 9(投掷距离 3,未超范围,9 为空)。 机械臂 C(位于 9)执行投掷,将 B 扔到 12(投掷距离 3,未超范围,12 为空)。 机械臂 B(位于 12)执行移动,从 12 移动到 15(移动距离 3,未超范围,15 为空)。 最终 3 台机械臂定位点为 6(A)、15(B)、9(C),最大编号为 15。

【样例 2 解释】 通过多轮抓取、投掷与移动的协作(如 C 抓取 B 后被 A 抓取,经 A 投掷至更远位置,再由 C 二次投掷 B,最后 B 自主移动),最终某台机械臂可到达定位点 18,为 3 者中的最大值。

数据范围