C. 进阶合并

    传统题 1000ms 256MiB

进阶合并

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

给一个数组,每次可以把相邻且相等的两个数合并成一个 ai+1a_i+1 。求最多操作多少次/最少剩几个数?

题目描述

给你一个数组 a1,a2,,ana_1,a_2,\cdots ,a_n 。你可以多次执行下面的操作:

  • 选择一对相邻相等的元素 ai=ai+1a_i=a_{i+1}
  • 用一个值为 ai+1a_i+1 的元素替换它们。

每次这样操作后,数组的长度都会减少一个。

问数组 aa 的最小长度是多少?

输入格式

第一行包含一个整数 nn ( 1n5001 \le n \le 500 ) 表示数组 aa 的初始长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n ( 1ai10001 \le a_i \le 1000 ) 。

输出格式

输出一个整数表示数组 aa 的最小长度。

输入输出样例 #1

输入 #1

5
4 3 2 2 3

输出 #1

2

输入输出样例 #2

输入 #2

7
3 3 4 4 4 3 3

输出 #2

2

输入输出样例 #3

输入 #3

3
1 3 5

输出 #3

3

说明/提示

测试点 nn aia_i 分数
subtask0subtask0 500\le500 相同 5050
subtask1subtask1 1000\le 1000

区间DP

未认领
状态
已结束
题目
5
开始时间
2025-9-13 0:00
截止时间
2025-10-31 23:59
可延期
24 小时