#ARC195D. 交换与删除

交换与删除

交换与删除

时间限制:2s
空间限制:512MB

题目描述

给定数列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N)。你可以任意次执行以下两种操作:

  1. 选择相邻的两项并交换它们;
  2. 选择一个非空前缀,要求前缀内所有数相等,然后把这个前缀整体删除。

求把数列删空所需的最少操作次数。有 TT 组测试数据,请分别求解。

输入格式

第一行输入一个整数 TT。

每组数据先输入一个整数 NN,下一行输入 NN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_N。

输出格式

对每组数据输出一行一个整数,表示最少操作次数。

样例输入 1

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

样例输出 1

3
4
8

样例说明

第一组数据可以先交换原序列第 3,43,4 项,得到 (1,1,1,2,2)(1,1,1,2,2),再分两次删除两个常值前缀,共使用 33 次操作。

数据范围

  • 1≤T≤1051\le T\le 10^5;
  • 2≤N≤2×1052\le N\le 2\times10^5;
  • 1≤Ai≤N1\le A_i\le N;
  • 单个输入文件中所有 NN 之和不超过 2×1052\times10^5。
子任务编号 分值 特殊限制
1 10 每组数据均有 N≤8N\le 8
2 20 每组数据均有 N≤24N\le 24
3 每组数据中满足 Ai≠Ai+1A_i\ne A_{i+1} 的位置不超过 2020 个
4 每组数据中的 AiA_i 两两不同
5 30 无特殊限制

附件数据