CF2248C Maximize the Score
题目描述
给定一个长度为 $2n$ 的数组 $a$。每个整数 $1$ 到 $n$ 在 $a$ 中恰好出现两次。
初始分数为 $0$。
你可以重复执行以下操作,直到 $a$ 为空:
- 选择一个当前在 $a$ 中出现的整数 $x$。
- 设 $l$ 和 $r$ 为当前数组中 $x$ 最左和最右出现位置的下标。如果 $x$ 只出现一次,则 $l = r$。
- 将 $(r - l + 1)^2$ 加到分数中。
- 删除子数组 $a_l, a_{l + 1}, \ldots, a_r$。剩余元素按原顺序重新拼接成一个新数组,并重新编号下标从 $1$ 开始。
请你求出将数组删空后,最大可能获得的分数。
输入格式
每个测试点包含多组测试数据。第一行是测试用例数 $t$($1 \le t \le 10^4$)。
每个测试用例的第一行一个整数 $n$($1 \le n \le 2 \cdot 10^5$)。
第二行为 $2n$ 个整数 $a_1, a_2, \ldots, a_{2n}$($1 \le a_i \le n$)。
保证每个 $1$ 到 $n$ 的整数在 $a$ 中恰好出现两次。
保证所有测试用例中 $n$ 之和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出一行一个整数,表示可以获得的最大分数。
说明/提示
在第二个样例中,一种最优方案是首先选择 $x=1$,这样会删除子数组 $[1,2,1]$ 并获得 $3^2=9$ 分数。剩下的数组是 $[2]$,选择 $x=2$ 后再加 $1$ 分。总分为 $10$。
在第三个样例中,选择 $x=1$ 可直接删除整个数组并获得 $4^2=16$ 分数。
第四个样例中,依次选择 $x=1$ 和 $x=2$,总分为 $2^2 + 4^2 = 20$。
第六个样例中,先选择 $x=2$,这会删除中间的子数组 $[2,3,4,1,2]$,得到 $5^2=25$ 分。删除后剩余 $[1,3,4]$,再选择每个剩下的数字,每次得 $1$ 分,总分 $28$。
由 ChatGPT 5 翻译