Description
有 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——这些值需要加到对应数组的元素上,以形成 1 到 n 之间的 n 个不同的整数。
如果有多个正确答案,输出任意一个即可。
5 5
1 1
1 2
1 3
1 4
1 5
Yes
0 0 0 0 0
6 4
2 2 3
1 6
1 4
2 1 5
Yes
1 -5 1 1
7 2
4 1 4 5 6
3 1 2 6
Yes
0 1
4 2
2 2 3
2 2 4
No
Hint
在第一个样例中,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≤i≤k 且 1≤j<li,满足 ai,j+1=ai,j+1;
- (15 分):k≤2;
- (21 分):k≤3;
- (10 分):对于 1≤i≤k 且 1≤j<li,满足 ai,j+2=ai,j+1;
- (10 分):对于 1≤i≤k,满足 $(\max_{j \in [1;l_i]} a_{i,j}) - (\min_{j \in [1;l_i]} a_{i,j})=(n-k)$;
- (10 分):n≤30;
- (17 分):无额外限制。
翻译由 DeepSeek V3 完成