CF1848B Vika and the Bridge

题目描述

夏天的时候,Vika 喜欢去她的乡间别墅。那里有一切可以放松的东西:舒适的秋千、自行车,还有一条河。 河上有一座由 $n$ 块木板组成的木桥。这座桥已经很旧且不美观,于是 Vika 决定给它刷漆。正好在工具棚里,她找到了 $k$ 种颜色的油漆罐。 Vika 把每块木板都刷成了 $k$ 种颜色中的一种后,正准备去荡秋千休息一下。但她突然意识到,房子在河的另一边,而油漆还没有完全干,所以她还不能直接走在桥上。 为了不破坏桥的美观,Vika 决定还是要走过桥,但她只能踩在同一种颜色的木板上。否则,她鞋底上的一小层油漆会弄脏其他颜色的木板。Vika 还剩下一点油漆,但只够重新粉刷桥上的一块木板。 现在 Vika 站在第一块木板前的地面上。为了过桥,她会选择一些颜色相同的木板(可以在重新粉刷一块木板后),这些木板的编号为 $1 \le i_1 < i_2 < \ldots < i_m \le n$(木板从左到右编号为 $1$ 到 $n$)。然后,Vika 需要分别跨过 $i_1-1, i_2-i_1-1, i_3-i_2-1, \ldots, i_m-i_{m-1}-1, n-i_m$ 块木板,共 $m+1$ 步。 由于 Vika 害怕摔倒,她不想迈太大的步子。请你帮她计算,在允许重新粉刷一块(或不粉刷)木板的情况下,她每一步最多需要跨过的木板数的最小可能值。

输入格式

每个测试用例包含多组数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的组数。接下来是每组测试用例的描述。 每组测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 2 \cdot 10^5$),分别表示桥上的木板数和油漆颜色数。 每组测试用例的第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$($1 \le c_i \le k$),表示 Vika 给每块木板刷的颜色。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每组测试用例,输出一个整数,表示 Vika 每一步最多需要跨过的木板数的最小可能值。

说明/提示

在第一个测试用例中,Vika 可以将中间的木板重新刷成颜色 $1$,这样她就可以不跨过任何木板直接走过桥。 在第二个测试用例中,Vika 可以将中间的木板重新刷成颜色 $2$,这样她每次只需要跨过一块木板。 在第三个测试用例中,Vika 可以将倒数第二块木板重新刷成颜色 $2$,然后只踩编号为 $2$ 和 $5$ 的木板。这样她每次需要跨过 $1$、$2$ 和 $1$ 块木板,所以答案是 $2$。 在第四个测试用例中,Vika 可以不重新刷任何木板,只踩颜色为 $3$ 的木板,每次跨过两块木板。 在第五个测试用例中,Vika 可以不重新刷任何木板,直接走过桥,不需要跨过任何木板。 由 ChatGPT 4.1 翻译