P10966 K-Anonymous Sequence
题目描述
各种应用领域中爆炸式增长的网络数据引发了相关个人的隐私问题。最近的研究表明,在发布图形/社交网络数据之前简单地删除节点的身份并不能保证隐私。图本身的结构及其基本形式——节点度,可以揭示个体的身份。
为了解决这个问题,我们研究了一个特定的图匿名化问题。如果对于每个节点 $v$,图中至少存在 $k-1$ 个与 $v$ 具有相同度数的其他节点,则称这个图为 $k$-anonymous。我们感兴趣的是在图上进行最少修改操作后实现 $k$-anonymous。
我们简化了这个问题。从整个图 $G$ 中选取 $n$ 个节点,并按升序列出它们的度数。我们定义一个序列是 $k$-anonymous,当且仅当对于每个元素 $s$,序列中至少存在 $k-1$ 个等于 $s$ 的其他元素。要让给定的序列 $k$-anonymous,你只能做一种操作——减少序列中的一些数字。我们定义修改的成本为你修改的所有数字的差值。例如,$k=3$ 的序列 $2,2,3,4,4,5,5$ 可以修改为 $2,2,2,4,4,4,4$,满足 $3$-anonymous,修改的成本为 $|3-2|+|5-4|+|5-4|=3$。
给出一个长为 $n$ 的按升序排列的序列和 $k$,我们想知道在所有使序列变为 $k$-anonymous 的修改方式中成本最小的一个。
输入格式
**本题有多组数据**。
第一行一个整数 $T$($1\le T\le20$),表示数据组数。
对于每组数据:
第一行两个整数 $n,k$($2\le k\le n\le5\times10^5$)。
第二行 $n$ 个整数,即按升序排列的度数序列。序列中的每个数字 $s$ 都在 $\left[0,5\times10^5\right]$ 范围内。
输出格式
对于每个测试,输出一行一个整数,表示最小成本。