#HK4305. 「ROIR 2022 Day1」跳跃机器人
「ROIR 2022 Day1」跳跃机器人
题目描述
译自 ROI Regional 2022 Day1 T2. Прыгающий робот
Flatland Dynamics 公司正在开发一款跳跃机器人。为了测试这款机器人,他们在一个测试场地上设置了一个由 个特殊平台组成的环形路线,这些平台从 到 依次编号。第 个平台和第 个平台之间的距离为 ,第 个平台和第 个平台之间的距离为 。
机器人配备了人工智能,并在测试过程中学习跳得更远。在任何时候,机器人的“灵活度”用一个整数 来表示。机器人可以从第 个平台跳到第 个平台,如果 。同样地,如果 ,机器人可以从第 个平台跳到第 个平台。每次跳跃后,机器人的灵活度会增加 。
开发人员会选择一个平台作为起点。如果机器人能够从当前平台开始,连续跳跃 次,完成一个完整的环并回到起点,他们就认为实验成功。开发人员需要找出机器人初始灵活度的最小值,以及从哪个平台开始跳跃才能成功完成实验。
输入格式
第一行包含一个整数 。
第二行包含一个整数 ,描述距离数组的格式。
-
如果 ,第三行包含 个整数 。
-
如果 ,第三行包含一个整数 和三个整数 。第四行包含 个整数 。距离 按以下公式计算:
- 如果 ,则 。
- 如果 ,则 $d_i = \left((x \cdot d_{i-2} + y \cdot d_{i-1} + z) \bmod 10^9\right) + 1$。
这里, 表示取模运算,在 C++、Java 和 Python 中用符号
%表示。
输出格式
输出两个整数:最小的初始灵活度 和机器人应该开始跳跃的起始平台编号。如果有多个可能的起始平台,可以输出其中任意一个。
5
1
3 7 4 2 5
4 3
10
2
5 1 2 3
1 2 3 4 5
653 1
在样例 2 中,平台之间的距离数组为 。从 到 的值按以下公式计算:
- $d_6 = \left((1 \cdot d_4 + 2 \cdot d_5 + 3) \bmod 10^9\right) + 1 = \left((1 \cdot 4 + 2 \cdot 5 + 3) \bmod 10^9\right) + 1 = 18$
- $d_7 = \left((1 \cdot d_5 + 2 \cdot d_6 + 3) \bmod 10^9\right) + 1 = \left((1 \cdot 5 + 2 \cdot 18 + 3) \bmod 10^9\right) + 1 = 45$
- $d_8 = \left((1 \cdot d_6 + 2 \cdot d_7 + 3) \bmod 10^9\right) + 1 = \left((1 \cdot 18 + 2 \cdot 45 + 3) \bmod 10^9\right) + 1 = 112$
- $d_9 = \left((1 \cdot d_7 + 2 \cdot d_8 + 3) \bmod 10^9\right) + 1 = \left((1 \cdot 45 + 2 \cdot 112 + 3) \bmod 10^9\right) + 1 = 273$
- $d_{10} = \left((1 \cdot d_8 + 2 \cdot d_9 + 3) \bmod 10^9\right) + 1 = \left((1 \cdot 112 + 2 \cdot 273 + 3) \bmod 10^9\right) + 1 = 662$
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 | 子任务依赖 |
|---|---|---|---|
| ,, | 无 | ||
| , | 1 | ||
| ,,保证从第一个平台开始是最优的 | 无 | ||
| , | |||
| ,保证从第一个平台开始是最优的 | |||