CF2108C.Neo's Escape

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Neo 想要逃离矩阵世界。在他面前有一排 nn 个按钮,每个按钮都有一个整数权重:a1,a2,…,ana_1, a_2, \ldots, a_n。

Neo 被固定住了,但他可以创建和移动克隆体。这意味着他可以按任意顺序执行以下两种操作,次数不限:

  1. 在特定按钮前创建一个克隆体。
  2. 将现有的克隆体向左或向右移动一个位置。

当一个克隆体位于尚未被按下的按钮前时(无论他是被创建还是被移动的),他会立即按下该按钮。如果按钮已经被按下过,克隆体不会做任何操作——每个按钮只能被按下一次。

为了成功逃脱,Neo 需要以特定的顺序按下所有按钮:按钮权重的序列必须是非递增的。也就是说,如果 b1,b2,…,bnb_1, b_2, \ldots, b_n 是按按钮的顺序对应的权重,那么必须满足 b1≥b2≥⋯≥bnb_1 \geq b_2 \geq \cdots \geq b_n。

你的任务是确定 Neo 需要创建的最少克隆体数量,以便能够以有效顺序按下所有按钮。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5)——按钮的数量。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \leq a_i \leq 10^9)——按钮的权重。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数——为了以有效顺序按下所有按钮需要创建的最少克隆体数量。

输入输出样例

  • 输入#1

    4
    5
    4 3 2 1 5
    3
    1 1 1
    6
    7 8 1 5 9 2
    10
    1 7 9 7 1 10 2 10 10 7

    输出#1

    2
    1
    2
    3

说明/提示

在第一个测试用例中,Neo 可以按以下方式操作:

  1. 在第五个按钮(权重为 55)前创建一个克隆体。
  2. 在第一个按钮(权重为 44)前创建第二个克隆体。
  3. 将第二个克隆体从第一个按钮移动到第二个按钮(权重为 33)。
  4. 将第二个克隆体从第二个按钮移动到第三个按钮(权重为 22)。
  5. 将第一个克隆体从第五个按钮移动到第四个按钮(权重为 11)。

这样,按钮按下的顺序将是 5→4→3→2→15 \rightarrow 4 \rightarrow 3 \rightarrow 2 \rightarrow 1,满足要求。可以证明,创建的克隆体数量是最小的。

在第二个测试用例中,Neo 可以按以下方式操作:

  1. 在第二个按钮(权重为 11)前创建一个克隆体。
  2. 将该克隆体从第二个按钮移动到第三个按钮(权重为 11)。
  3. 将该克隆体从第三个按钮移回第二个按钮(已被按下)。
  4. 将该克隆体从第二个按钮移动到第一个按钮(权重为 11)。

这样,按钮按下的顺序将是 1→1→11 \rightarrow 1 \rightarrow 1。

翻译由 DeepSeek V3 完成

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

首页