我们希望通过至多一次删除一个连续子段,使剩余序列所有元素互不相同(“多彩”)。设删除的是区间 [l,r],则保留下来的部分是前缀 [1,l−1] 与后缀 [r+1,n] 的拼接。因此剩余序列“多彩”的充要条件是:
于是问题转化为:选择一个前缀长度 i(保留 [1,i]),和一个后缀起点 r(保留 [r,n]),满足三条互异性条件,删除长度为 k=r−i−1 的中段,使 k 最小。为了便于实现,令前缀长度用“元素个数”记为 i(即保留 [1..i]),则删除长度是 r−i(当我们用 0-based 写法时,等式会相应平移,思想一致)。
小明喜欢多彩的数列。在他眼中,一个数列是多彩的,当且仅当数列中的元素互不相同.具体的,数列 b1,b2,…,bn 。被认为是多彩的,当且仅当对于任意两个不同的下标 i,j(1≤i,j≤n,i=j), 都有 bi=bj ;
这天,小明拿到了一个长为 n 的数列 {a}。并且,他能选择施展他的魔法,选择一个非负整数 k ,将这个数列中某一个长度为k的连续子段删去(剩下的元素按原顺序拼接),这个过程消耗 k 个单位的魔力值。
因为施展魔法后小明会变得很虚弱,所以他只能施展该魔法至多一次。当然,如果 {a} 原来就是多彩的,他也可以不施展。