CF2084G2 Wish Upon a Satellite (Hard Version)

题目描述

这是该问题的困难版本。与简单版本的区别在于,本版本中 $t \le 10^4$、$n \le 5 \times 10^5$ 且所有测试用例的 $n$ 之和不超过 $5\times 10^5$。只有当你解决了该问题的所有版本时才能进行 hack。 对于一个长度为 $k$ 的非空序列 $c$,定义 $f(c)$ 如下: - Turtle 和 Piggy 正在一个序列上玩游戏。他们被给定序列 $c_1, c_2, \ldots, c_k$,由 Turtle 先手。Turtle 和 Piggy 轮流进行操作(Turtle 第一步,Piggy 第二步,Turtle 第三步,依此类推)。 - 游戏规则如下: - 设当前序列长度为 $m$。如果 $m = 1$,游戏结束。 - 如果游戏未结束且轮到 Turtle,Turtle 必须选择一个整数 $i$($1 \le i \le m - 1$),将 $c_i$ 设为 $\min(c_i, c_{i + 1})$,并删除 $c_{i + 1}$。 - 如果游戏未结束且轮到 Piggy,Piggy 必须选择一个整数 $i$($1 \le i \le m - 1$),将 $c_i$ 设为 $\max(c_i, c_{i + 1})$,并删除 $c_{i + 1}$。 - Turtle 希望最终 $c_1$ 的值最大化,而 Piggy 希望最终 $c_1$ 的值最小化。 - $f(c)$ 表示双方都采取最优策略时,最终 $c_1$ 的值。 对于一个长度为 $n$ 的排列 $p$ $^{\text{∗}}$,Turtle 定义该排列的美观度为 $\sum\limits_{i = 1}^n \sum\limits_{j = i}^n f([p_i, p_{i + 1}, \ldots, p_j])$(即所有 $p$ 的非空子段 $^{\text{†}}$ $c$ 的 $f(c)$ 之和)。 Piggy 给 Turtle 一个长度为 $n$ 的排列 $a$,其中部分元素缺失(用 $0$ 表示)。 Turtle 请你确定一个排列 $b$,满足以下条件: - $b$ 可以通过填充 $a$ 中缺失的元素得到(即对于所有 $1 \le i \le n$,如果 $a_i \ne 0$,则 $b_i = a_i$)。 - 排列 $b$ 的美观度最大化。 为了方便,你只需要找到这样的排列 $b$ 的最大美观度。 $^{\text{∗}}$ 长度为 $n$ 的排列是指由 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列(因为 $2$ 在数组中出现了两次),$[1,3,4]$ 也不是排列(因为 $n=3$ 但数组中包含 $4$)。 $^{\text{†}}$ 序列 $a$ 是序列 $b$ 的子段,当且仅当 $a$ 可以通过从 $b$ 的开头和结尾删除若干(可能为零或全部)元素得到。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 10^4$)。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 5\times 10^5$)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le n$)。保证 $a$ 中非 $0$ 的元素互不相同。 保证所有测试用例的 $n$ 之和不超过 $5\times 10^5$。

输出格式

对于每个测试用例,输出一个整数——排列 $b$ 的最大美观度。

说明/提示

- 在第一个测试用例中,美观度最大的排列 $b$ 是 $[1, 2]$。$[1, 2]$ 的美观度为 $4$,因为 $f([1]) + f([2]) + f([1, 2]) = 1 + 2 + 1 = 4$。如果 $c = [1, 2]$,则 $f(c) = 1$,因为 Turtle 只能选择 $i = 1$,并将 $c_1$ 设为 $\min(c_1, c_2) = 1$。 - 在第二个测试用例中,美观度最大的排列之一是 $[3, 2, 1]$。$[3, 2, 1]$ 的美观度为 $12$,因为 $f([3]) + f([2]) + f([1]) + f([3, 2]) + f([2, 1]) + f([3, 2, 1]) = 3 + 2 + 1 + 2 + 1 + 3 = 12$。 - 在第三个测试用例中,美观度最大的排列之一是 $[2, 1, 3]$。 - 在第四个测试用例中,如果 $c = [3, 2, 4, 5, 1]$,则 $f(c) = 3$。一种可能的游戏过程如下: - Turtle 选择 $i = 3$,将 $c_3$ 设为 $\min(c_3, c_4) = 4$ 并删除 $c_4$。序列变为 $[3, 2, 4, 1]$。 - Piggy 选择 $i = 1$,将 $c_1$ 设为 $\max(c_1, c_2) = 3$ 并删除 $c_2$。序列变为 $[3, 4, 1]$。 - Turtle 选择 $i = 2$,将 $c_2$ 设为 $\min(c_2, c_3) = 1$ 并删除 $c_3$。序列变为 $[3, 1]$。 - Piggy 选择 $i = 1$,将 $c_1$ 设为 $\max(c_1, c_2) = 3$ 并删除 $c_2$。序列变为 $[3]$。 - 序列长度为 $1$,游戏结束。最终 $c_1$ 的值为 $3$。 - 在第五个测试用例中,美观度最大的排列之一是 $[1, 3, 2, 5, 6, 4, 7]$。 翻译由 DeepSeek V3 完成