CF2144B.Maximum Cost Permutation

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Maximum Cost Permutation

题目描述

回忆一下,长度为 nn 的排列是一个长度为 nn 的序列,使得 11nn 的每个整数都恰好出现一次。

我们定义一个排列的代价为:使整个排列递增有序,仅需排序最短的一个连续子段(可以为空)的长度。

现给定一个由 00nn 的整数构成的数组 pp,其中没有任何正整数(大于零)出现超过一次。你需要用整数替换所有的 00,使得数组 pp 变成一个排列。

你的任务是计算,所能构造的排列的最大可能代价。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)——表示测试用例组数。

每组测试用例第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5)。

第二行包含 nn 个整数 p1,p2,,pnp_1, p_2, \dots, p_n0pin0 \le p_i \le n)。在这个序列中没有正整数出现超过一次。

额外输入约束:所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每组测试用例,输出一个整数,表示你能构造的排列的最大可能代价。

说明/提示

在第一个样例中,你可以构造排列 [1,3,4,2,5][1, 3, 4, 2, 5],其代价为 33,因为你需要排序区间 [2,4][2, 4]

在第二个样例中,你可以构造排列 [2,3,1][2, 3, 1],其代价为 33,因为你需要排序区间 [1,3][1, 3]

在第三个样例中,只有唯一的排列 [1,2,3,4][1, 2, 3, 4],其代价为 00,因为排列已经有序。

在第四个样例中,只有唯一的排列 [1,3,2][1, 3, 2],其代价为 22,因为你需要排序区间 [2,3][2, 3]

由 ChatGPT 5 翻译

样例

4
5
1 0 4 0 5
3
0 0 0
4
1 2 3 0
3
0 3 2
3
3
0
2

在线编程 IDE

建议全屏模式获得最佳体验