P14197 [ICPC 2024 Hangzhou R] Kind of Bingo
题目描述
有一个由 $n$ 行 $m$ 列组成的网格。网格中的每个单元格从 $1$ 到 $n \times m$ 编号,第 $i$ 行第 $j$ 列的单元格编号为 $((i - 1) \times m + j)$。
给定一个 $n \times m$ 长度的排列 $p_1, p_2, \cdots, p_{n \times m}$,我们将按照该排列进行 $n \times m$ 次操作。第 $i$ 次操作时,我们会标记单元格 $p_i$。如果在第 $b$ 次操作后,存在至少一行的所有单元格都被标记,并且 $b$ 尽可能小,则称 $b$ 为该排列的“bingo 数”。
你最多可以对该排列进行 $k$ 次修改(也可以不修改)。每次修改可以交换排列中的任意两个元素。请计算在最多经过 $k$ 次修改后,最小可能的 bingo 数。
注意,若一个长度为 $n \times m$ 的序列 $p_1, p_2, \cdots, p_{n \times m}$ 每个整数 $1$ 到 $n \times m$ 各出现一次,那么它是 $n \times m$ 的一个排列。
输入格式
输入包含多组测试数据。第一行为整数 $T$($1 \le T \le 10^4$),表示数据组数。每组测试数据输入如下:
第一行包含三个整数 $n$、$m$ 和 $k$($1 \le n, m \le 10^5$,$1 \le n \times m \le 10^5$,$0 \le k \le 10^9$),分别表示网格的行数、列数和你可以进行交换的最大次数。
第二行包含 $n \times m$ 个不同的整数 $p_1, p_2, \cdots, p_{n \times m}$($1 \le p_i \le n \times m$)。
保证所有测试数据中 $n \times m$ 的总和不超过 $10^5$。
输出格式
对于每组测试数据,输出一行一个整数,表示经过最多 $k$ 次修改后,最小可能的 bingo 数。
说明/提示
对于第一个样例,我们可以先交换 $1$ 和 $15$,再交换 $6$ 和 $12$,得到序列 $[15, 4, 13, 12, 8, 11, 14, 2, 7, 10, 3, 1, 9, 5, 6]$。可以发现第 $7$ 次操作后,第 $3$ 行的所有单元格都被标记。
对于第二个样例,很容易发现第 $5$ 次操作后,第 $2$ 行的所有单元格都被标记。
对于第三个样例,不需要做任何修改。第 $3$ 次操作后,第 $1$ 行的所有单元格都被标记。
由 ChatGPT 5 翻译