CF1842C.Tenzing and Balls

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Tenzing 有 nn 个球排成一行。第 ii 个球的颜色为 aia_i

Tenzing 可以进行任意次以下操作(可能为零次):

  • 选择两个颜色相同的球 iijji<ji < j),然后将第 ii 个到第 jj 个(包含两端)之间的所有球从行中删除。被删除的球会从行中消失,剩下的球会靠拢保持相对顺序。

Tenzing 想要删除尽可能多的球。请帮助他计算最多能删除多少个球。

输入格式

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

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

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n)。

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,输出一个整数——最多能删除的球的数量。

输入输出样例

  • 输入#1

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

    输出#1

    4
    3

说明/提示

  • 样例 1:选择 i=2,j=4i = 2, j = 4(颜色 22),删除第 22 到第 44 个球 [2,3,2][2, 3, 2],剩下 [1,1][1, 1],再选择 i=1,j=2i = 1, j = 2(颜色 11)删除全部,共删除 55 个……实际上最优是 44
  • 样例 2:全部颜色相同,可以直接一次操作删除所有 66 个球。
  • 样例 3:所有颜色都不同,无法进行任何操作,删除 00 个。
  • 核心思路:dp[i]\mathit{dp}[i] 表示前 ii 个球中最多能删多少个。用 last[c]\mathit{last}[c] 记录颜色 cc 上一次出现的位置来优化转移。
首页