CF1407D.Discrete Centrifugal Jumps

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There are nn beautiful skyscrapers in New York, the height of the ii-th one is hih_i. Today some villains have set on fire first n−1n - 1 of them, and now the only safety building is nn-th skyscraper.

Let's call a jump from ii-th skyscraper to jj-th (i<ji \lt j) discrete, if all skyscrapers between are strictly lower or higher than both of them. Formally, jump is discrete, if i<ji \lt j and one of the following conditions satisfied:

  • i+1=ji + 1 = j
  • max⁡(hi+1,…,hj−1)<min⁡(hi,hj)\max(h_{i + 1}, \ldots, h_{j - 1}) \lt \min(h_i, h_j)
  • max⁡(hi,hj)<min⁡(hi+1,…,hj−1)\max(h_i, h_j) \lt \min(h_{i + 1}, \ldots, h_{j - 1}).

At the moment, Vasya is staying on the first skyscraper and wants to live a little longer, so his goal is to reach nn-th skyscraper with minimal count of discrete jumps. Help him with calcualting this number.

纽约有 nn 座美丽的摩天大楼,第 ii 座的高度为 hih_i。今天,一些反派纵火点燃了前 n−1n - 1 座大楼,目前唯一安全的大楼只剩下第 nn 座。

我们称从第 ii 座大楼跳到第 jj 座大楼(其中 i<ji \lt j)是一次离散跳跃,当且仅当所有位于它们之间的大楼的高度严格低于二者中的较小值,或严格高于二者中的较大值。形式化地,跳跃是离散的,当且仅当 i<ji \lt j 且满足以下条件之一:

  • i+1=ji + 1 = j
  • max⁡(hi+1,…,hj−1)<min⁡(hi,hj)\max(h_{i + 1}, \ldots, h_{j - 1}) \lt \min(h_i, h_j)
  • max⁡(hi,hj)<min⁡(hi+1,…,hj−1)\max(h_i, h_j) \lt \min(h_{i + 1}, \ldots, h_{j - 1})。

此时,瓦西娅正站在第一座大楼上,他希望尽可能活得久一点,因此他的目标是以最少的离散跳跃次数到达第 nn 座大楼。请帮他计算这个最小跳跃次数。

输入格式

The first line contains a single integer nn (2≤n≤3⋅1052 \le n \le 3 \cdot 10^5) — total amount of skyscrapers.

The second line contains nn integers h1,h2,…,hnh_1, h_2, \ldots, h_n (1≤hi≤1091 \le h_i \le 10^9) — heights of skyscrapers.

第一行包含一个整数 nn(2≤n≤3⋅1052 \le n \le 3 \cdot 10^5)—— 摩天大楼的总数。

第二行包含 nn 个整数 h1,h2,…,hnh_1, h_2, \ldots, h_n(1≤hi≤1091 \le h_i \le 10^9)—— 各摩天大楼的高度。

输出格式

Print single number kk — minimal amount of discrete jumps. We can show that an answer always exists.

输出单个数字 kk —— 离散跳跃的最小次数。我们可以证明答案总是存在。

输入输出样例

  • 输入#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→51 \rightarrow 2 \rightarrow 4 \rightarrow 5.

In the second and third testcases, we can reach last skyscraper in one jump.

Sequence of jumps in the fourth testcase: 1→3→51 \rightarrow 3 \rightarrow 5.

在第一个测试用例中,瓦西娅可以按以下方式跳跃:1→2→4→51 \rightarrow 2 \rightarrow 4 \rightarrow 5。

在第二和第三个测试用例中,我们可以通过一次跳跃到达最后一栋摩天大楼。

第四个测试用例中的跳跃序列:1→3→51 \rightarrow 3 \rightarrow 5。

输入解题思路,AI测评打分。不知道怎么写?

首页