#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) 的值两两不同,并且满足 1ai,j+din1 \leq a_{i,j} + d_i \leq n

输入格式

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

接下来的 kk 行描述各个数组。第 ii 行包含一个整数 lil_i (1lin)(1 \le l_i \le n)lil_i 个整数 ai,1,ai,2,,ai,lia_{i,1}, a_{i,2}, \ldots, a_{i,l_i} (1ai,jn)(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 个不同的整数,值从 11nn

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

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}(对于 1ik1 \le i \le k1j<li1 \le j < l_i
33 1515 k2k \le 2
44 2121 k3k \le 3
55 1010 ai,j+2=ai,j+1a_{i,j}+2=a_{i,j+1}(对于 1ik1 \le i \le k1j<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)$(对于 1ik1 \le i \le k
77 1010 n30n \le 30
88 1717 无附加限制