CF2237F Paint the Array
题目描述
给定一个长度为 $n$ 的数组和一个固定整数 $m$。一次“涂色操作”定义如下:
- 选择一个长度为 $m$ 的区间,并将其从左到右依次涂上数值 $1,2,\ldots,m$。形式上,选择一个整数 $l$,使得 $1\le l\le n-m+1$。然后对于每个 $1\le i\le m$,位置 $l+i-1$ 被涂上值 $i$。
如果一个位置被多次涂色,则只有最后一次涂色的数值会保留。
如果一个数组可以通过若干次涂色操作得到,并且每个位置至少被涂色一次,则称该数组为“合法”的。
给定一个数组 $a_1,a_2,\ldots,a_n$ ($1\le a_i\le m$),请你求出最少需要修改多少个元素(每次修改可以将某个数改为 $1$ 到 $m$ 之间的任意整数),才能使该数组合法。
输入格式
每组测试包含多组测试用例。第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含两个整数 $n$ 和 $m$($1\le m\le n\le 5\cdot 10^5$),表示数组长度和每次涂色的区间长度。
第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1\le a_i\le m$)。
保证所有测试用例中 $n$ 的总和不超过 $5\cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示使该数组合法所需的最少修改次数。
说明/提示
以下转换中,下划线标出的为最近一次操作所涂的位置。
在第一个测试用例中,原数组已经合法。例如可以如下操作:
$$
[-,-,-,-,-]\to[-,-,\underline{1},\underline{2},\underline{3}]\to[\underline{1},\underline{2},\underline{3},2,3]。
$$
因此无需修改,答案为 $0$。
在第二个测试用例中,由于 $n=4$ 且 $m=3$,每个合法数组都必须通过“涂色”区间 $[1,3]$ 和 $[2,4]$ 得到。例如:
$$
[-,-,-,-]\to[-,\underline{1},\underline{2},\underline{3}]\to[\underline{1},\underline{2},\underline{3},3]。
$$
这样可以得到合法数组 $[1,2,3,3]$。给定的数组 $[1,2,2,3]$ 只需修改第三个元素即可变为合法数组,所以答案是 $1$。
在第三个测试用例中,最近的合法数组为 $[1,1,2,3,3]$,它的涂色过程如下:
$$
[-,-,-,-,-]\to[\underline{1},\underline{2},\underline{3},-,-]\to[1,2,\underline{1},\underline{2},\underline{3}]\to[1,\underline{1},\underline{2},\underline{3},3]。
$$
给定的数组 $[2,1,2,3,2]$ 与 $[1,1,2,3,3]$ 有两处不同。可以证明一次修改不足够使其变为合法数组,因此答案为 $2$。
由 ChatGPT 5 翻译