#HK5218. 「UOI 2023 Stage 4 Day1」数组与更多数组

「UOI 2023 Stage 4 Day1」数组与更多数组

题目描述

题目译自 Ukrainian Olympiads in Informatics 2023 Stage 4 Day1 T1. Масив і ще кілька масивів

给定 kk 个整数数组 a1,a2,…,aka_1, a_2, \ldots, a_k。编号为 ii 的数组包含 lil_i 个元素。设 n=l1+l2+…+lkn = l_1 + l_2 + \ldots + l_k。

你需要找到 kk 个整数 d1,d2,…,dkd_1, d_2, \ldots, d_k,使得所有 (ai,j+di)(a_{i,j} + d_i) 的值两两不同,并且满足 1≤ai,j+di≤n1 \leq a_{i,j} + d_i \leq n。

输入格式

输入的第一行包含两个整数 nn 和 kk (1≤n≤104,1≤k≤5)(1 \le n \le 10^4, 1 \le k \le 5),分别表示所有数组中元素的总数和数组的数量。

接下来的 kk 行描述各个数组。第 ii 行包含一个整数 lil_i (1≤li≤n)(1 \le l_i \le n) 和 lil_i 个整数 ai,1,ai,2,…,ai,lia_{i,1}, a_{i,2}, \ldots, a_{i,l_i} (1≤ai,j≤n)(1 \le a_{i,j} \le n),分别表示第 ii 个数组的长度及其元素。

保证 n=l1+l2+…+lkn = l_1 + l_2 + \ldots + l_k。

输出格式

如果不存在所求的 dd 值,输出一行 No。

否则,第一行输出 Yes。

第二行输出 kk 个整数 d1,d2,…,dkd_1, d_2, \ldots, d_k,表示需要加到各数组元素上的值,使得最终形成 nn 个不同的整数,值从 11 到 nn。

如果存在多个正确答案,可以输出任意一个。

5 5
1 1
1 2
1 3
1 4
1 5

Yes
0 0 0 0 0

在第一个样例中,d=[0,0,0,0,0]d = [0, 0, 0, 0, 0] 满足条件,因为加完对应值后,数组变为 [1],[2],[3],[4],[5][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]d = [1, -5, 1, 1] 满足条件,因为加完对应值后,数组变为 [3,4],[1],[5],[2,6][3, 4], [1], [5], [2, 6]。

7 2
4 1 4 5 6
3 1 2 6

Yes
0 1

在第三个样例中,d=[0,1]d = [0, 1] 满足条件,因为加完对应值后,数组变为 [1,4,5,6][1, 4, 5, 6] 和 [2,3,7][2, 3, 7]。

4 2
2 2 3
2 2 4

No

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 88 k=1k=1
22 99 ai,j+1=ai,j+1a_{i,j}+1=a_{i,j+1}(对于 1≤i≤k1 \le i \le k,1≤j<li1 \le j < l_i)
33 1515 k≤2k \le 2
44 2121 k≤3k \le 3
55 1010 ai,j+2=ai,j+1a_{i,j}+2=a_{i,j+1}(对于 1≤i≤k1 \le i \le k,1≤j<li1 \le j < l_i)
66 1010 $(\max_{j \in [1;l_i]} a_{i,j}) - (\min_{j \in [1;l_i]} a_{i,j}) = (n - k)$(对于 1≤i≤k1 \le i \le k)
77 1010 n≤30n \le 30
88 1717 无附加限制