#M0016. 清空书架

    ID: 1037 传统题 文件IO:shelf 1000ms 512MiB 尝试: 0 已通过: 0 难度: 普及+/提高− 上传者: 标签>动态规划CSP-J复赛T4区间DP2026模拟大纲2025

清空书架

题目背景

图书馆要搬家了。小 Z 负责清空一个长长的书架,书架上的书一本挨着一本排成一行,每本书有一种颜色。为了省力,小 Z 每次都想一口气抱走尽量多的书,可是他发现抱走的书必须颜色一样,否则会被管理员批评。

题目描述

本题使用文件输入输出:输入文件名为 shelf.in,输出文件名为 shelf.out。

书架上从左到右放着 nn 本书,第 ii 本书的颜色是 cic_i。

小 Z 每次操作可以选择书架上连续的一段书,要求这一段书的颜色全部相同,然后把这一段书全部拿走。拿走后,右边的书会向左挪,补上空位,也就是说原来被隔开的书会变成相邻的。

请你求出小 Z 最少要操作多少次才能把书架清空。

输入格式

输入文件名为 shelf.in。

第一行一个整数 nn。

第二行 nn 个整数 c1,c2,…,cnc_1, c_2, \dots, c_n,相邻两个数之间用一个空格隔开。

输出格式

输出文件名为 shelf.out。

一行一个整数,表示最少的操作次数。

样例 1 输入

5
1 2 2 1 3

样例 1 输出

3

样例 1 解释

第一次拿走中间的两本颜色为 22 的书,书架变成 1 1 3;第二次拿走两本颜色为 11 的书,书架变成 3;第三次拿走最后一本。共 33 次。

可以证明不存在只用 22 次的方案。

样例 2 输入

5
1 2 1 3 1

样例 2 输出

3

样例 2 解释

第一次拿走颜色为 22 的书,书架变成 1 1 3 1;第二次拿走颜色为 33 的书,书架变成 1 1 1;第三次把三本颜色为 11 的书一起拿走。

注意:三本颜色为 11 的书最初互不相邻,但在拿走其它书之后可以在一次操作中一起拿走。

样例 3

见附件 shelf3.in 与 shelf3.ans。

这个样例满足 n≤60n \le 60。

样例 4

见附件 shelf4.in 与 shelf4.ans。

这个样例满足所有测试点的最大规模。

数据范围

对于所有测试点,保证 1≤n≤3001 \le n \le 300,1≤ci≤n1 \le c_i \le n。

测试点编号 n≤n \le
1∼21 \sim 2 55
3∼43 \sim 4 88
5∼65 \sim 6 6060
7∼107 \sim 10 300300