RYIP在线题库
首 页   >   习题练习   >   提交
Problem1899--彩球对对碰

1899: 彩球对对碰

[Creator : ]
Time Limit : 2.000 sec  Memory Limit : 256 MB

【 Description 】

小D沉迷于一款名为“彩球对对碰”的消除游戏。
游戏开始时,界面下方的轨道上会出现N颗彩球。这些彩球从左至右依次排列。方便起见,彩球的颜色将用不超过M的非负整数进行编号,不同编号对应着不同的颜色。
界面上方是一个发射器,每次能朝轨道的某个位置(某两颗相邻的彩球之间,或者所有球的最左侧、最右侧)发射一颗特定颜色的彩球。如果此时连同这颗新出现的彩球有多颗(2颗或以上)相同颜色的彩球在轨道上连续出现,那么这一段颜色相同的彩球将会被全部消除。随后,它们左右的彩球将会被拼接在一起。此时,如果左右拼接在一起的两颗彩球拥有相同颜色,那么这些刚被拼接在一起的连续若干颗颜色相同的彩球也将被全部消除。以此下去,直至被拼接在一起的左右两颗彩球不再具有相同颜色,或者刚刚消除的是轨道最左侧或最右侧的若干颗彩球。


例如上图所示,轨道上有10颗彩球,并且发射器上是一颗黄色的彩球。当我们将这颗彩球发射到第4颗与第5颗彩球之间时,连同这颗新出现的彩球将有连续2颗彩球均为黄色,因此它们将会被消除。紧接着,左右两边的蓝色彩球将会拼接在一起,它们也将被全部消除。于是,轨道上还剩6颗彩球。

如果下一颗发射的彩球是紫色的,我们可以将它发射到第4颗与第5颗彩球之间。此时,三颗紫色的彩球将被消除。接着,两颗刚被拼接在一起的橙色彩球也将被消除。


对于剩下的两颗红色彩球,如果下一颗被发射的彩球正好是红色,那么轨道就被清空了! 
显然,发射器上依次出现的彩球颜色、玩家每次选择的发射位置,都会影响游戏的进展。
小D很好奇,假如发射器上的彩球颜色每次都可以由自己指定,对于给定的一个初始游戏局面,至少需要发射多少颗彩球才能将轨道清空? 请你计算并告诉小D。
注意:游戏开始时,可能会有一些相同颜色的彩球连续出现,但它们不会自动消除!颜色相同且位置连续的彩球会被消除,仅当它们之中有刚被射入的彩球,或者它们是因某些彩球的消除而被刚刚拼接在一起的。


【 Input 】

第一行为两个整数N, M,分别表示游戏初始时轨道上的彩球数量,以及彩球颜色的编号范围(不保证所有颜色初始时都会出现)。
第二行为N个整数a1, a2, a3, …, aN,从左至右地描述轨道上每个彩球的颜色。

【 Output 】

一个整数,表示消除所有彩球的最少发射次数。

【 Sample Input 】

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

【 Sample Output 】

3

【HINT】

【样例输入2】
7 3
1 2 1 3 1 3 1
【样例输出2】
3
【样例说明2】
可以先在第2颗彩球之前射入一颗颜色2的彩球,此时轨道上的彩球将变为 3, 1, 3, 1。然后在第3颗之前射入一颗颜色3的彩球,轨道上将只留下一颗颜色3的彩球。此时,再射入一颗颜色3的彩球即可清空轨道。
最优方案不唯一,但没有更优的方案了。
【样例输入3】
20 7
7 7 6 5 2 2 2 3 3 6 1 1 4 3 2 5 6 2 3 4
【样例输出3】
7
【数据规模与约定】
对于10%的测试点,保证1 ≤ N ≤ 8。
对于30%的测试点,保证1 ≤ M ≤ 5,1 ≤ N ≤ 30。
对于60%的测试点,保证1 ≤ N ≤ 500。
对于100%的测试点, 保证1 ≤ M ≤ N ≤ 5000。