33OJ
登录 注册

#CF2205C. 西蒙与博客发布 / Simons and Posting Blogs

西蒙与博客发布 / Simons and Posting Blogs

题目描述

This life is like a TV show; we're swept along as the plotlines go.

— SHUN, TRAP

有 nn 篇博客。第 ii 篇博客按顺序提到了 lil_i 个用户,记为数组 ai=[ai,1,ai,2,…,ai,li]a_i=[a_{i,1},a_{i,2},\ldots,a_{i,l_i}]。

你需要发布全部 nn 篇博客。我们维护一个序列 QQ,用来记录最近被提到的用户列表。你需要恰好执行 nn 次下面的操作:

  • 选择一篇还没有发布的博客 ii(1≤i≤n1\le i\le n),然后发布它。发布时,按顺序对每一个 1≤j≤li1\le j\le l_i 执行:
    • 如果 ai,ja_{i,j} 已经在 QQ 中,就把 ai,ja_{i,j} 移动到 QQ 的最前面。
    • 否则,将 ai,ja_{i,j} 插入到 QQ 的最前面。

求所有 nn 次操作完成后,字典序最小的 QQ。

∗^{\text{∗}}数组 xx 字典序小于数组 yy,当且仅当满足下面二者之一:

  • xx 是 yy 的前缀,且 x≠yx \ne y;
  • 在 xx 和 yy 第一个不相同的位置上,xx 在该位置的元素更小。

输入格式

每个测试点包含多组测试用例。第一行一个整数 tt(1≤t≤10001 \le t \le 1000),代表测试用例数量。接下来是每组测试用例的描述。

第一行一个整数 nn(1≤n≤30001\le n\le 3000)——博客的数量。

接下来 nn 行,第 ii 行开头是整数 lil_i(1≤li≤30001\le l_i\le 3000),表示该博客提到的用户数量,之后跟着 lil_i 个整数 ai,1,ai,2,…,ai,lia_{i,1},a_{i,2},\ldots,a_{i,l_i}(1≤ai,j≤1061\le a_{i,j}\le 10^6)——这篇博客依次提到的用户。

保证所有测试用例的 nn 之和不超过 30003000。

记 ∑i=1nli\sum\limits_{i=1}^n l_i 为 LL,保证所有测试用例的 LL 之和不超过 30003000。

输出格式

记 mm 为至少在一篇博客中出现过的不同用户数量。对每组测试用例,输出 mm 个整数 Q1,Q2,…,QmQ_1,Q_2,\ldots,Q_m,即字典序最小的 QQ。

5
3
5 1 2 3 4 6
3 2 5 1
4 1 9 2 3
2
2 1 6
1 6
1
3 6 1 1
5
4 2 3 3 4
5 1 2 4 3 1
2 4 1
3 3 3 1
5 4 3 2 2 2
5
4 2 3 1 4
5 2 5 5 6 5
5 3 4 7 5 5
8 3 6 4 3 1 1 5 4
2 1 1
1 5 2 3 9 6 4
6 1
1 6
1 3 2 4
1 4 3 2 5 6 7

说明

在第一个测试用例中,可以按如下顺序发布博客:

  • 发布第一篇博客,QQ 变为 [6,4,3,2,1][6,4,3,2,1]。
  • 发布第三篇博客,QQ 变为 [3,2,9,1,6,4][3,2,9,1,6,4]。
  • 发布第二篇博客,QQ 变为 [1,5,2,3,9,6,4][1,5,2,3,9,6,4]。

还有另一种发布方式:

  • 发布第三篇博客,QQ 变为 [3,2,9,1][3,2,9,1]。
  • 发布第一篇博客,QQ 变为 [6,4,3,2,1,9][6,4,3,2,1,9]。
  • 发布第二篇博客,QQ 变为 [1,5,2,6,4,3,9][1,5,2,6,4,3,9]。

可以看到 [1,5,2,3,9,6,4][1,5,2,3,9,6,4] 的字典序更小。如果不把第二篇博客放在最后发布,序列第一个元素就无法是 11,因此 [1,5,2,3,9,6,4][1,5,2,3,9,6,4] 就是字典序最小的序列。

在第二个测试用例中,可以按如下顺序发布博客:

  • 发布第一篇博客,QQ 变为 [6,1][6,1]。
  • 发布第二篇博客,QQ 保持 [6,1][6,1] 不变。

第三个测试用例只有一篇博客,发布之后 QQ 为 [1,6][1,6]。

原题链接

原题链接