给你一个形如\(1,2,\cdots,R,1,2,\cdots,R,1\cdots\)的序列,共重复\(C\)次。你每次能够选择一个区间\([L,R]\)将其平移到序列首部,最终使得序列具备\([1,1,\cdots,1,2,2,\cdots,2,\cdots,R,R,\cdots,R]\)的形式。问最少须要多少次,并输出具体步骤。spa
比赛的时候只来得及写前两道,这道题是赛后看dls录播后补的。啥都不说了,dlstxdy!class
对于相邻且相同的元素,咱们就把他合并成\(1\)个元素,要求的序列形式就变为\([1,2,\cdots,R]\)。方法
对于一个序列,把他的一段区间平移到序列的首部,很容易能够证出最多删掉两个元素。移动
好比对于\([[1,2],[3,1],2,3,1,2,3]\),咱们能够把第一个\([3,1]\)移到序列首部,获得\([3,1,1,2,2,3,1,2,3]\),合并相邻且相同的元素后是\([[3,1],[2,3],1,2,3]\),而后再把第一个\([2,3]\)移动到序列首部,获得\([2,3,3,1,1,2,3]\),合并后是\([[2,3],[1,2],3]\),而后再把第一个\([1,2]\)移动到序列首部,获得\([1,2,3]\)。比赛
若是咱们每次都删掉两个元素,那么使用的次数确定是最少的。可是还有一种特殊状况,好比\(R=5,C=2\)的时候按上述方法缩到最后会获得\([5,1,2,3,4,5]\)的序列。这种状况下就把\([1,2,3,4,5]\)移动到序列首部,而后就能够获得\([1,2,3,4,5]\),这样子也确定是最优的。math
而后由于\(R,C\)的取值范围比较小,直接模拟就完事了。