给定一个长度为 n 的序列,这里面有 m 种数字。
例如:n=5,m=2
序列为:1 2 2 1 2
例如:n=7,m=4
序列为:1 4 2 3 1 3 2
定义一次操作是在任何一个两数之间的空隙里面插入一个 1∼m 的数。边缘也算空隙。
例如:n=5,m=2
序列为:1 2 2 1 2
一次合法操作为:1 2 1 2 1 2
也可以是:1 1 2 2 1 2
等等。
假如在某个时刻(没执行任何操作前除外),某个序列的子区间(长度 ≥2)的数字完全相同,那么可以全部消除。
例如:n=5,m=2
序列为:1 2 2 1 2
一次合法操作为:1 2 2 1 1 2
接下来会自动消除序列的第 4∼5 个,使序列变为 1 2 2 2
然后会自动消除序列的第 2∼4 个,是序列变为 1
现在你需要求出最少多少次操作能使序列清空。
样例
Input:
10 5
1 1 2 3 4 3 3 5 5 2
Output:
3
样例解释:
可行的一种方案是:
原序列为 1 1 2 3 4 3 3 5 5 2
接下来插入 1 1 2 3 4 4 3 3 5 2
第一次序列会自动消除变为 1 1 2 3 3 3 5 2
第二次序列会自动消除变为 1 1 2 5 2
然后插入 1 1 2 5 5 2
第一次序列会自动消除变为 1 1 2 2
第二次序列会自动消除变为 1 1
注意:这里的两个 1 是序列本身就有的,不会自动消除。
最后插入 1 1 1。
这样序列就清空了,总共需要 3 步。