P12566 [UOI 2023] An Array and Several More Arrays
题目描述
有 $k$ 个整数数组 $a_1, a_2, \ldots, a_k$,其中第 $i$ 个数组包含 $l_i$ 个元素。设 $n = l_1 + l_2 + \ldots + l_k$。
你需要找到 $k$ 个整数 $d_1, d_2, \ldots, d_k$,使得所有 $(a_{i,j} + d_i)$ 两两不同且满足 $1 \leq a_{i,j} + d_i \leq n$。
输入格式
第一行包含两个整数 $n$ 和 $k$($1 \le n \le 10^4$,$1 \le k \le 5$)——分别表示所有数组的元素总数和数组的数量。
接下来的 $k$ 行描述这些数组。第 $i$ 行包含一个整数 $l_i$($1 \le l_i \le n$)和 $l_i$ 个整数 $a_{i,1}, a_{i,2}, \ldots, a_{i,l_i}$($1 \le a_{i,j} \le n$)——分别表示第 $i$ 个数组的长度和元素。
保证 $n = l_1 + l_2 + \ldots + l_k$。
输出格式
如果不存在满足条件的 $d$,输出一行 ``No``。
否则,第一行输出 ``Yes``。
第二行输出 $k$ 个整数 $d_1, d_2, \ldots, d_k$——这些值需要加到对应数组的元素上,以形成 $1$ 到 $n$ 之间的 $n$ 个不同的整数。
如果有多个正确答案,输出任意一个即可。
说明/提示
在第一个样例中,$d = [0,0,0,0,0]$ 满足条件,因为加上对应值后,数组变为 $[1]$、$[2]$、$[3]$、$[4]$、$[5]$。
在第二个样例中,$d = [1,-5,1,1]$ 满足条件,因为加上对应值后,数组变为 $[3,4]$、$[1]$、$[5]$、$[2,6]$。
在第三个样例中,$d = [0,1]$ 满足条件,因为加上对应值后,数组变为 $[1,4,5,6]$ 和 $[2,3,7]$。
### 评分标准
- ($8$ 分):$k=1$;
- ($9$ 分):对于 $1 \le i \le k$ 且 $1 \le j < l_i$,满足 $a_{i,j}+1=a_{i,j+1}$;
- ($15$ 分):$k \le 2$;
- ($21$ 分):$k \le 3$;
- ($10$ 分):对于 $1 \le i \le k$ 且 $1 \le j < l_i$,满足 $a_{i,j}+2=a_{i,j+1}$;
- ($10$ 分):对于 $1 \le i \le k$,满足 $(\max_{j \in [1;l_i]} a_{i,j}) - (\min_{j \in [1;l_i]} a_{i,j})=(n-k)$;
- ($10$ 分):$n \le 30$;
- ($17$ 分):无额外限制。
翻译由 DeepSeek V3 完成