CF2085F2.Serval and Colorful Array (Hard Version)

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是该问题的困难版本。两个版本的区别在于此版本中 n≤4⋅105n \leq 4 \cdot 10^5。仅当您解决了该问题的所有版本时才能进行 hack。

Serval 有一个魔法数 kk(k≥2k \geq 2)。我们称数组 rr 为 colorful 当且仅当:

  • rr 的长度为 kk,且
  • 11 到 kk 之间的每个整数在 rr 中恰好出现一次。

给定一个由 nn 个介于 11 到 kk 的整数组成的数组 aa。保证 11 到 kk 之间的每个整数在 aa 中至少出现一次。您可以对 aa 执行以下操作:

  • 选择一个下标 ii(1≤i<n1 \leq i < n),然后交换 aia_i 和 ai+1a_{i+1}。

求使得 aa 中至少存在一个 colorful 子数组∗^{\text{∗}}所需的最小操作次数。可以证明在题目约束下这总是可行的。

∗^{\text{∗}}数组 bb 是数组 aa 的子数组,当且仅当 bb 可以通过从 aa 的开头和结尾删除若干(可能为零或全部)元素得到。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数 tt(1≤t≤10001 \le t \le 1000)。接下来描述每个测试用例。

每个测试用例的第一行包含两个整数 nn 和 kk(2≤k≤n≤4⋅1052 \leq k \leq n \leq 4 \cdot 10^5)——数组 aa 的长度和 Serval 的魔法数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤k1 \leq a_i \leq k)——数组 aa 的元素。保证 11 到 kk 之间的每个整数在 aa 中至少出现一次。

保证所有测试用例的 nn 之和不超过 4⋅1054 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数 —— 使得 aa 中至少存在一个 colorful 子数组所需的最小操作次数。

输入输出样例

  • 输入#1

    6
    3 2
    1 2 1
    7 3
    2 1 1 3 1 1 2
    6 3
    1 1 2 2 2 3
    6 3
    1 2 2 2 2 3
    10 5
    5 1 3 1 1 2 2 4 1 3
    9 4
    1 2 3 3 3 3 3 2 4

    输出#1

    0
    1
    2
    3
    4
    5

说明/提示

第一个测试案例中,由于子数组 [a1,a2]=[1,2][a_1, a_2] = [1, 2] 和 [a2,a3]=[2,1][a_2, a_3] = [2, 1] 已经是 colorful 的,因此无需执行任何操作。答案为 00。

第二个测试案例中,我们可以交换 a1a_1 和 a2a_2 得到 [1,2,1,3‾,1,1,2][1, \underline{2, 1, 3}, 1, 1, 2],其中包含一个 colorful 子数组 [a2,a3,a4]=[2,1,3][a_2, a_3, a_4] = [2, 1, 3]。由于原数组初始时没有 colorful 子数组,因此答案为 11。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页