CF1407D.Discrete Centrifugal Jumps
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
There are n beautiful skyscrapers in New York, the height of the i-th one is hi. Today some villains have set on fire first n−1 of them, and now the only safety building is n-th skyscraper.
Let's call a jump from i-th skyscraper to j-th (i<j) discrete, if all skyscrapers between are strictly lower or higher than both of them. Formally, jump is discrete, if i<j and one of the following conditions satisfied:
- i+1=j
- max(hi+1,…,hj−1)<min(hi,hj)
- max(hi,hj)<min(hi+1,…,hj−1).
At the moment, Vasya is staying on the first skyscraper and wants to live a little longer, so his goal is to reach n-th skyscraper with minimal count of discrete jumps. Help him with calcualting this number.
纽约有 n 座美丽的摩天大楼,第 i 座的高度为 hi。今天,一些反派纵火点燃了前 n−1 座大楼,目前唯一安全的大楼只剩下第 n 座。
我们称从第 i 座大楼跳到第 j 座大楼(其中 i<j)是一次离散跳跃,当且仅当所有位于它们之间的大楼的高度严格低于二者中的较小值,或严格高于二者中的较大值。形式化地,跳跃是离散的,当且仅当 i<j 且满足以下条件之一:
- i+1=j
- max(hi+1,…,hj−1)<min(hi,hj)
- max(hi,hj)<min(hi+1,…,hj−1)。
此时,瓦西娅正站在第一座大楼上,他希望尽可能活得久一点,因此他的目标是以最少的离散跳跃次数到达第 n 座大楼。请帮他计算这个最小跳跃次数。
输入格式
The first line contains a single integer n (2≤n≤3⋅105) — total amount of skyscrapers.
The second line contains n integers h1,h2,…,hn (1≤hi≤109) — heights of skyscrapers.
第一行包含一个整数 n(2≤n≤3⋅105)—— 摩天大楼的总数。
第二行包含 n 个整数 h1,h2,…,hn(1≤hi≤109)—— 各摩天大楼的高度。
输出格式
Print single number k — minimal amount of discrete jumps. We can show that an answer always exists.
输出单个数字 k —— 离散跳跃的最小次数。我们可以证明答案总是存在。
输入输出样例
输入#1
5 1 3 1 4 5
输出#1
3
输入#2
4 4 2 2 4
输出#2
1
输入#3
2 1 1
输出#3
1
输入#4
5 100 1 100 1 100
输出#4
2
说明/提示
In the first testcase, Vasya can jump in the following way: 1→2→4→5.
In the second and third testcases, we can reach last skyscraper in one jump.
Sequence of jumps in the fourth testcase: 1→3→5.
在第一个测试用例中,瓦西娅可以按以下方式跳跃:1→2→4→5。
在第二和第三个测试用例中,我们可以通过一次跳跃到达最后一栋摩天大楼。
第四个测试用例中的跳跃序列:1→3→5。
输入解题思路,AI测评打分。不知道怎么写?