#P10087. [ROIR 2022 Day 1] 跳跃机器人
[ROIR 2022 Day 1] 跳跃机器人
题目背景
翻译自 ROIR 2022 D1T2。
某公司正在开发一种跳跃机器人。为了测试机器人,他们在一个多边形平台上设置了一个由 个特殊平台组成的环形路线,平台从 到 编号。第 个平台与 个平台之间的距离为 ,最后一个平台与第一个平台之间的距离为 (假设长度分别为 的边可以组成一个 边形)。
机器人配备了人工智能,在测试过程中学习跳得更远。在任何时刻,机器人通过一个整数 来表示它的灵敏度。如果 大于等于 ,机器人可以从平台 跳到平台 ;同样地,如果 大于等于 ,机器人可以从最后一个平台跳到第一个平台。每次跳跃后,机器人的灵敏度增加 。
题目描述
机器人的开发人员选择一个平台作为起始平台。如果机器人可以完成 次跳跃,回到原来的平台,他们认为实验是成功的。开发人员需要确定机器人的最小起始灵敏度是多少,并选择哪个平台作为起始平台。
输入格式
第一行包含一个整数 。
第二行包含一个整数 。
- 如果 ,则第三行包含 个整数 ,意义见题目背景。
- 如果 ,则第三行包含一个整数 ,以及三个整数 。第四行包含 个整数 。此时距离值 根据以下公式计算:
- 如果 ,则 。
- 如果 ,则 $d_i = ((x \times d_{i−2} + y \times d_{i−1} + z) \bmod 10^9) + 1$。
输出格式
输出两个整数,即最小允许的起始灵敏度 和可用于放置机器人的起始平台编号。如果有多个最小起始灵敏度对应的起始平台,可以输出任意一个。
5
1
3 7 4 2 5
4 3
10
2
5 1 2 3
1 2 3 4 5
653 1
提示
样例说明:
在第二个示例中,距离数组为 。
根据公式计算 到 的值:
- $d_6 = ((1 \cdot d_4 + 2 \cdot d_5 + 3) \bmod 10^9) + 1 = ((1 \cdot 4 + 2 \cdot 5 + 3) \bmod 10^9) + 1 = 18$;
- $d_7 = ((1 \cdot d_5 + 2 \cdot d_6 + 3) \bmod 10^9) + 1 = ((1 \cdot 5 + 2 \cdot 18 + 3) \bmod 10^9) + 1 = 45$;
- $d_8 = ((1 \cdot d_6 + 2 \cdot d_7 + 3) \bmod 10^9) + 1 = ((1 \cdot 18 + 2 \cdot 45 + 3) \bmod 10^9) + 1 = 112$;
- $d_9 = ((1 \cdot d_7 + 2 \cdot d_8 + 3) \bmod 10^9) + 1 = ((1 \cdot 45 + 2 \cdot 112 + 3) \bmod 10^9) + 1 = 273$;
- $d_{10} = ((1 \cdot d_8 + 2 \cdot d_9 + 3) \bmod 10^9) + 1 = ((1 \cdot 112 + 2 \cdot 273 + 3) \bmod 10^9) + 1 = 662$。
本题使用捆绑测试。
子任务 | 分值 | 特殊性质 |
---|---|---|
且保证从第一个平台开始跳是最佳选择 | ||
且保证从第一个平台开始跳是最佳选择 | ||
对于 的数据,。当 时 ,当 时 ,,。
注:本题的算法标签部分参考了官方题解中用到的解法。