题号:NC253625
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
氧气少年现在有一个长度为

的序列

和一个空的矩阵,矩阵的行数不限,但列数为

。
每次操作他可以从下面的操作中任选其一:
-
任选序列的某个位置,将此位置的数字修改为任意的数字;
-
将矩阵的列数增加
;
-
将矩阵的列数减小
(如果当前矩阵的列数大于
)。
操作完成后,
氧气少年将序列中的每个元素依次按照从上到下、从左到右的顺序填到矩阵中。(即:先填第

行第

列,再填第

行第

列,

填第

行第

列,填第

行第

列,填第

行第

列,

填第

行第

列,以此类推。)
氧气少年想要让矩阵至少一列的所有数字均为目标数字

,请求出他需要做的最少的操作次数。
例如,当
![a=[1,2,3,4,5,1,6,7,8,9,1,2,3,4,5,8,9],m=4,k=1](https://www.nowcoder.com/equation?tex=a%3D%5B1%2C2%2C3%2C4%2C5%2C1%2C6%2C7%2C8%2C9%2C1%2C2%2C3%2C4%2C5%2C8%2C9%5D%2Cm%3D4%2Ck%3D1)
时,如果不执行任何操作,填数后的矩阵如下图所示:
如果在填数之前,先将

改为

,再将矩阵的列数增加为

,那么填数后的矩阵如下图所示:
注意到此时第一列的所有数字均为目标数字

,符合要求,并且没有比这耗费次数更少的操作方案。因此答案为

。
例如,当
![a=[1,2,3,4,5],m=3,k=3](https://www.nowcoder.com/equation?tex=a%3D%5B1%2C2%2C3%2C4%2C5%5D%2Cm%3D3%2Ck%3D3)
时,如果不执行任何操作,填数后的矩阵如下图所示:
注意到此时第三列的所有数字均为目标数字

,符合要求。因此答案为

。
输入描述:
第一行包含一个整数
,表示测试用例的组数。
对于每组测试用例:
第一行包含三个整数
,分别表示序列的长度,初始矩阵的列数和目标数字。
第二行包含
个整数
,表示该序列。
保证对于所有的测试用例,
的总和不超过
。
输出描述:
对于每组测试用例:
仅输出一行,包含一个整数,表示答案。
示例1
输入
复制
2
17 4 1
1 2 3 4 5 1 6 7 8 9 1 2 3 4 5 8 9
5 3 3
1 2 3 4 5