CF2108C Neo's Escape

题目描述

Neo 想要逃离矩阵世界。在他面前有一排 $n$ 个按钮,每个按钮都有一个整数权重:$a_1, a_2, \ldots, a_n$。 Neo 被固定住了,但他可以创建和移动克隆体。这意味着他可以按任意顺序执行以下两种操作,次数不限: 1. 在特定按钮前创建一个克隆体。 2. 将现有的克隆体向左或向右移动一个位置。 当一个克隆体位于尚未被按下的按钮前时(无论他是被创建还是被移动的),他会立即按下该按钮。如果按钮已经被按下过,克隆体不会做任何操作——每个按钮只能被按下一次。 为了成功逃脱,Neo 需要以特定的顺序按下所有按钮:按钮权重的序列必须是非递增的。也就是说,如果 $b_1, b_2, \ldots, b_n$ 是按按钮的顺序对应的权重,那么必须满足 $b_1 \geq b_2 \geq \cdots \geq b_n$。 你的任务是确定 Neo 需要创建的最少克隆体数量,以便能够以有效顺序按下所有按钮。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 10^4$)。接下来是测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$)——按钮的数量。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$)——按钮的权重。 保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。

输出格式

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

说明/提示

在第一个测试用例中,Neo 可以按以下方式操作: 1. 在第五个按钮(权重为 $5$)前创建一个克隆体。 2. 在第一个按钮(权重为 $4$)前创建第二个克隆体。 3. 将第二个克隆体从第一个按钮移动到第二个按钮(权重为 $3$)。 4. 将第二个克隆体从第二个按钮移动到第三个按钮(权重为 $2$)。 5. 将第一个克隆体从第五个按钮移动到第四个按钮(权重为 $1$)。 这样,按钮按下的顺序将是 $5 \rightarrow 4 \rightarrow 3 \rightarrow 2 \rightarrow 1$,满足要求。可以证明,创建的克隆体数量是最小的。 在第二个测试用例中,Neo 可以按以下方式操作: 1. 在第二个按钮(权重为 $1$)前创建一个克隆体。 2. 将该克隆体从第二个按钮移动到第三个按钮(权重为 $1$)。 3. 将该克隆体从第三个按钮移回第二个按钮(已被按下)。 4. 将该克隆体从第二个按钮移动到第一个按钮(权重为 $1$)。 这样,按钮按下的顺序将是 $1 \rightarrow 1 \rightarrow 1$。 翻译由 DeepSeek V3 完成