#P10966. K-Anonymous Sequence

K-Anonymous Sequence

Description

各种应用领域中爆炸式增长的网络数据引发了相关个人的隐私问题。最近的研究表明,在发布图形/社交网络数据之前简单地删除节点的身份并不能保证隐私。图本身的结构及其基本形式——节点度,可以揭示个体的身份。

为了解决这个问题,我们研究了一个特定的图匿名化问题。如果对于每个节点 vv,图中至少存在 k1k-1 个与 vv 具有相同度数的其他节点,则称这个图为 kk-anonymous。我们感兴趣的是在图上进行最少修改操作后实现 kk-anonymous。

我们简化了这个问题。从整个图 GG 中选取 nn 个节点,并按升序列出它们的度数。我们定义一个序列是 kk-anonymous,当且仅当对于每个元素 ss,序列中至少存在 k1k-1 个等于 ss 的其他元素。要让给定的序列 kk-anonymous,你只能做一种操作——减少序列中的一些数字。我们定义修改的成本为你修改的所有数字的差值。例如,k=3k=3 的序列 2,2,3,4,4,5,52,2,3,4,4,5,5 可以修改为 2,2,2,4,4,4,42,2,2,4,4,4,4,满足 33-anonymous,修改的成本为 32+54+54=3|3-2|+|5-4|+|5-4|=3

给出一个长为 nn 的按升序排列的序列和 kk,我们想知道在所有使序列变为 kk-anonymous 的修改方式中成本最小的一个。

Input Format

本题有多组数据

第一行一个整数 TT1T201\le T\le20),表示数据组数。

对于每组数据:

第一行两个整数 n,kn,k2kn5×1052\le k\le n\le5\times10^5)。

第二行 nn 个整数,即按升序排列的度数序列。序列中的每个数字 ss 都在 [0,5×105]\left[0,5\times10^5\right] 范围内。

Output Format

对于每个测试,输出一行一个整数,表示最小成本。

2
7 3
2 2 3 4 4 5 5
6 2
0 3 3 4 8 9
3
5