CFCF2205D.Simons and Beating Peaks

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

我最美好的愿望随风消散;十八岁时,我将梦想倾注于麦克风,与你们分享。

—— SHUN,720

我们称长度为 mm 的数组 bb 为“cool”(酷),当且仅当:

  • 不存在下标 ii1<i<m1 < i < m),使得 bi=max({bi1,bi,bi+1})b_i = \max(\{b_{i-1}, b_i, b_{i+1}\})

Simons 有一个大小为 nn 的数组 aa。最初,该数组是一个排列^{\text{∗}}

他需要持续进行如下操作,直到数组变为cool:

  • 选择一个下标 ii1<i<n1 < i < n),满足 ai=max({ai1,ai,ai+1})a_i = \max(\{a_{i-1}, a_i, a_{i+1}\})
  • 然后,他可以从数组中删除 ai1a_{i-1}ai+1a_{i+1}。删除后,数组的左右部分会重新拼接起来形成一个新数组。

请你求出 Simons 至少需要进行多少次操作。

^{\text{∗}} 长度为 nn 的排列是指一个包含 11nn、且每个数恰好出现一次的数组。比如 [2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3,但出现了 44)。

输入格式

每组测试数据包含多个测试用例。第一行包含测试用例个数 tt1t51041 \leq t \leq 5 \cdot 10^4)。接下来描述各组测试数据。

第一行包含一个整数 nn3n51053 \leq n \leq 5 \cdot 10^5)——aa 的长度。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n1ain1 \leq a_i \leq n,且所有 aia_i 都互不相同),表示 Simons 最初拥有的数组。

保证所有测试用例中 nn 的总和不超过 51055 \cdot 10^5

输出格式

对于每个测试用例,输出一行一个整数,表示 Simons 至少需要多少次操作。

输入输出样例

  • 输入#1

    5
    3
    1 2 3
    5
    4 1 3 2 5
    6
    4 5 3 6 2 1
    7
    6 5 1 7 4 2 3
    15
    7 4 10 12 9 14 5 3 8 11 1 15 2 13 6

    输出#1

    0
    1
    3
    3
    9

说明/提示

在第一个测试用例中,数组一开始就是 cool 的,因此 Simons 不需要任何操作。答案为 00

在第二个测试用例中,Simons 可以这样操作:

  • 选择下标 33,因为 a3=max({a2,a3,a4})a_3 = \max(\{a_2, a_3, a_4\})。然后,他删除 a2a_2。数组变为 [4,3,2,5][4,3,2,5]

可以发现,数组现在已经 cool。于是答案为 11

在第三个测试用例中,Simons 可以这样操作:

  • 选择下标 22,然后删除 a1a_1,数组变为 [5,3,6,2,1][5,3,6,2,1]
  • 选择下标 33,然后删除 a2a_2,数组变为 [5,6,2,1][5,6,2,1]
  • 选择下标 22,然后删除 a1a_1,数组变为 [6,2,1][6,2,1]

因此,Simons 一共进行了 33 次操作使数组变为 cool。

首页