#P15672. [Bulgarian2024训练营]逃跑Runaway
[Bulgarian2024训练营]逃跑Runaway
题目描述
Bobi 住进了一片森林。森林中有 棵树排成一条直线,编号为 到 。第 棵树的高度为 ,这些高度互不相同,并且构成 的一个排列。
Bobi 站在树 上时,可以跳到某棵树 ,当且仅当满足下列条件之一:
- ,,并且对所有 ,都有 ;
- ,,并且对所有 ,都有 。
也就是说,他只能跳到左右两侧第一个“能越过中间所有树”的更高树。
现在有 个询问。每个询问给出四个整数 ,满足
Bobi 可以从编号在 中的任意一棵树开始,最终要到达编号在 中的任意一棵树。求最少需要多少次跳跃;若无法到达,返回 。
实现方式
本题为函数式提交题,需要实现两个函数:
void init(int N, std::vector<int> H);
int minimum_jumps(int A, int B, int C, int D);
init会被调用一次,给出 和高度数组 ;minimum_jumps会被调用 次,每次返回对应询问的答案。
数据范围
- ;
- ;
- ;
- 两两不同;
- 。
子任务
| 子任务 | 分值 | 额外限制 | ||
|---|---|---|---|---|
| 1 | 0 | - | 样例 | |
| 2 | 4 | |||
| 3 | 8 | - | ||
| 4 | 13 | |||
| 5 | 12 | |||
| 6 | 23 | |||
| 7 | 21 | |||
| 8 | 19 | - | ||
本地测试格式
本地 grader 的输入格式:
- 第一行:;
- 第二行:;
- 接下来 行:。
样例
输入
7 3
3 2 1 6 4 5 7
4 4 6 6
1 3 5 6
0 1 2 2
输出
2
1
-1
样例解释
三次询问对应的最优跳跃路径分别为:
- ;
- ;
- 不存在可行路径。
@下发文件