CF2084G2.Wish Upon a Satellite (Hard Version)
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是该问题的困难版本。与简单版本的区别在于,本版本中 t≤104、n≤5×105 且所有测试用例的 n 之和不超过 5×105。只有当你解决了该问题的所有版本时才能进行 hack。
对于一个长度为 k 的非空序列 c,定义 f(c) 如下:
- Turtle 和 Piggy 正在一个序列上玩游戏。他们被给定序列 c1,c2,…,ck,由 Turtle 先手。Turtle 和 Piggy 轮流进行操作(Turtle 第一步,Piggy 第二步,Turtle 第三步,依此类推)。
- 游戏规则如下:
- 设当前序列长度为 m。如果 m=1,游戏结束。
- 如果游戏未结束且轮到 Turtle,Turtle 必须选择一个整数 i(1≤i≤m−1),将 ci 设为 min(ci,ci+1),并删除 ci+1。
- 如果游戏未结束且轮到 Piggy,Piggy 必须选择一个整数 i(1≤i≤m−1),将 ci 设为 max(ci,ci+1),并删除 ci+1。
- Turtle 希望最终 c1 的值最大化,而 Piggy 希望最终 c1 的值最小化。
- f(c) 表示双方都采取最优策略时,最终 c1 的值。
对于一个长度为 n 的排列 p ∗,Turtle 定义该排列的美观度为 i=1∑nj=i∑nf([pi,pi+1,…,pj])(即所有 p 的非空子段 † c 的 f(c) 之和)。
Piggy 给 Turtle 一个长度为 n 的排列 a,其中部分元素缺失(用 0 表示)。
Turtle 请你确定一个排列 b,满足以下条件:
- b 可以通过填充 a 中缺失的元素得到(即对于所有 1≤i≤n,如果 ai=0,则 bi=ai)。
- 排列 b 的美观度最大化。
为了方便,你只需要找到这样的排列 b 的最大美观度。
∗ 长度为 n 的排列是指由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(因为 2 在数组中出现了两次),[1,3,4] 也不是排列(因为 n=3 但数组中包含 4)。
† 序列 a 是序列 b 的子段,当且仅当 a 可以通过从 b 的开头和结尾删除若干(可能为零或全部)元素得到。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t(1≤t≤104)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤5×105)。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤n)。保证 a 中非 0 的元素互不相同。
保证所有测试用例的 n 之和不超过 5×105。
输出格式
对于每个测试用例,输出一个整数——排列 b 的最大美观度。
输入输出样例
输入#1
8 2 1 0 3 0 0 0 3 0 1 0 5 3 2 4 5 1 7 0 3 2 5 0 0 0 10 1 2 6 5 8 9 0 0 0 0 5 0 4 1 0 0 5 0 1 5 2 3
输出#1
4 12 11 44 110 300 45 40
说明/提示
-
在第一个测试用例中,美观度最大的排列 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,并将 c1 设为 min(c1,c2)=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,将 c3 设为 min(c3,c4)=4 并删除 c4。序列变为 [3,2,4,1]。
- Piggy 选择 i=1,将 c1 设为 max(c1,c2)=3 并删除 c2。序列变为 [3,4,1]。
- Turtle 选择 i=2,将 c2 设为 min(c2,c3)=1 并删除 c3。序列变为 [3,1]。
- Piggy 选择 i=1,将 c1 设为 max(c1,c2)=3 并删除 c2。序列变为 [3]。
- 序列长度为 1,游戏结束。最终 c1 的值为 3。
-
在第五个测试用例中,美观度最大的排列之一是 [1,3,2,5,6,4,7]。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?