#P14197. [ICPC 2024 Hangzhou R] Kind of Bingo

[ICPC 2024 Hangzhou R] Kind of Bingo

Description

有一个由 nnmm 列组成的网格。网格中的每个单元格从 11n×mn \times m 编号,第 ii 行第 jj 列的单元格编号为 ((i1)×m+j)((i - 1) \times m + j)

给定一个 n×mn \times m 长度的排列 p1,p2,,pn×mp_1, p_2, \cdots, p_{n \times m},我们将按照该排列进行 n×mn \times m 次操作。第 ii 次操作时,我们会标记单元格 pip_i。如果在第 bb 次操作后,存在至少一行的所有单元格都被标记,并且 bb 尽可能小,则称 bb 为该排列的“bingo 数”。

你最多可以对该排列进行 kk 次修改(也可以不修改)。每次修改可以交换排列中的任意两个元素。请计算在最多经过 kk 次修改后,最小可能的 bingo 数。

注意,若一个长度为 n×mn \times m 的序列 p1,p2,,pn×mp_1, p_2, \cdots, p_{n \times m} 每个整数 11n×mn \times m 各出现一次,那么它是 n×mn \times m 的一个排列。

Input Format

输入包含多组测试数据。第一行为整数 TT1T1041 \le T \le 10^4),表示数据组数。每组测试数据输入如下:

第一行包含三个整数 nnmmkk1n,m1051 \le n, m \le 10^51n×m1051 \le n \times m \le 10^50k1090 \le k \le 10^9),分别表示网格的行数、列数和你可以进行交换的最大次数。

第二行包含 n×mn \times m 个不同的整数 p1,p2,,pn×mp_1, p_2, \cdots, p_{n \times m}1pin×m1 \le p_i \le n \times m)。

保证所有测试数据中 n×mn \times m 的总和不超过 10510^5

Output Format

对于每组测试数据,输出一行一个整数,表示经过最多 kk 次修改后,最小可能的 bingo 数。

3
3 5 2
1 4 13 6 8 11 14 2 7 10 3 15 9 5 12
2 3 0
1 6 4 3 5 2
2 3 1000000000
1 2 3 4 5 6
7
5
3

Hint

对于第一个样例,我们可以先交换 111515,再交换 661212,得到序列 $[15, 4, 13, 12, 8, 11, 14, 2, 7, 10, 3, 1, 9, 5, 6]$。可以发现第 77 次操作后,第 33 行的所有单元格都被标记。

对于第二个样例,很容易发现第 55 次操作后,第 22 行的所有单元格都被标记。

对于第三个样例,不需要做任何修改。第 33 次操作后,第 11 行的所有单元格都被标记。

由 ChatGPT 5 翻译