题目描述
题目译自 Ukrainian Olympiads in Informatics 2023 Stage 4 Day1 T1. Масив і ще кілька масивів
给定 k 个整数数组 a1,a2,…,ak。编号为 i 的数组包含 li 个元素。设 n=l1+l2+…+lk。
你需要找到 k 个整数 d1,d2,…,dk,使得所有 (ai,j+di) 的值两两不同,并且满足 1≤ai,j+di≤n。
输入格式
输入的第一行包含两个整数 n 和 k (1≤n≤104,1≤k≤5),分别表示所有数组中元素的总数和数组的数量。
接下来的 k 行描述各个数组。第 i 行包含一个整数 li (1≤li≤n) 和 li 个整数 ai,1,ai,2,…,ai,li (1≤ai,j≤n),分别表示第 i 个数组的长度及其元素。
保证 n=l1+l2+…+lk。
输出格式
如果不存在所求的 d 值,输出一行 No。
否则,第一行输出 Yes。
第二行输出 k 个整数 d1,d2,…,dk,表示需要加到各数组元素上的值,使得最终形成 n 个不同的整数,值从 1 到 n。
如果存在多个正确答案,可以输出任意一个。
5 5
1 1
1 2
1 3
1 4
1 5
Yes
0 0 0 0 0
在第一个样例中,d=[0,0,0,0,0] 满足条件,因为加完对应值后,数组变为 [1],[2],[3],[4],[5]。
6 4
2 2 3
1 6
1 4
2 1 5
Yes
1 -5 1 1
在第二个样例中,d=[1,−5,1,1] 满足条件,因为加完对应值后,数组变为 [3,4],[1],[5],[2,6]。
7 2
4 1 4 5 6
3 1 2 6
Yes
0 1
在第三个样例中,d=[0,1] 满足条件,因为加完对应值后,数组变为 [1,4,5,6] 和 [2,3,7]。
4 2
2 2 3
2 2 4
No
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
分值 |
附加限制 |
| 1 |
8 |
k=1 |
| 2 |
9 |
ai,j+1=ai,j+1(对于 1≤i≤k,1≤j<li) |
| 3 |
15 |
k≤2 |
| 4 |
21 |
k≤3 |
| 5 |
10 |
ai,j+2=ai,j+1(对于 1≤i≤k,1≤j<li) |
| 6 |
10 |
$(\max_{j \in [1;l_i]} a_{i,j}) - (\min_{j \in [1;l_i]} a_{i,j}) = (n - k)$(对于 1≤i≤k) |
| 7 |
10 |
n≤30 |
| 8 |
17 |
无附加限制 |