0%

Codeforces Round 1083 (Div. 2)——CF-2205-C. Simons and Posting Blogs

题目大意

题目描述

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

你需要将这 nn 篇博客全部发布。维护一个序列 QQ(初始为空)来记录最近提到的用户列表。你需要选择一个所有 nn 篇博客的发布顺序进行发布,每次发布一篇博客 ii 时,会对每一个 1jli1 \le j \le l_i 依次执行以下操作:

  • 如果 ai,ja_{i,j} 已经存在于 QQ 中,则将 ai,ja_{i,j} 移动到 QQ 的开头。

  • 否则,将 ai,ja_{i,j} 插入到 QQ 的开头。

求在发布所有 nn 篇博客后,所能得到的字典序最小的序列 QQ

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。
每个测试用例第一行包含一个整数 nn1n30001 \le n \le 3000),表示博客数量。
接下来 nn 行,每行首先包含一个整数 lil_i1li30001 \le l_i \le 3000),表示第 ii 篇博客提到的用户数量,随后跟着 lil_i 个整数 ai,1,ai,2,,ai,lia_{i,1},a_{i,2},\dots,a_{i,l_i}1ai,j1061 \le a_{i,j} \le 10^6),表示提到的用户列表。
保证所有测试用例中 nn 的总和不超过 30003000li\sum l_i 的总和不超过 30003000

输出格式

对于每个测试用例,输出一行包含若干个整数,表示能够得到的字典序最小的 QQ

样例数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Input
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

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

样例解释

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

  1. 发布第一篇博客,QQ 变为 [6,4,3,2,1][6,4,3,2,1]

  2. 发布第三篇博客,QQ 变为 [3,2,9,1,6,4][3,2,9,1,6,4]

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

这里存在其他的发布方式,例如:

  1. 发布第三篇博客,QQ 变为 [3,2,9,1][3,2,9,1]

  2. 发布第一篇博客,QQ 变为 [6,4,3,2,1,9][6,4,3,2,1,9]

  3. 发布第二篇博客,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

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

  1. 发布第一篇博客,QQ 变为 [6,1][6,1]

  2. 发布第二篇博客,QQ 保持自身为 [6,1][6,1]

在第三个测试用例中,只能发布唯一的一篇博客,QQ 会变为 [1,6][1,6]

思路讲解

哎,其实这个思路和我一模一样,这个思路其实和我一模一样,我说白了你不会更加有更加简单的做法,实际上你就是这个做法,绷不住了。

也看了各路大神的代码,确实是没有更加简单的做法了。

1
2
3
4
5
6
7
8
9
10
11
12
while (!g.empty()) {
sort(all(g));
for (auto a:g[0]) {
ans.push_back(a);
used.insert(a);
}
vector<vector<ll>> new_g;
for (int i=1;i<g.size();++i) {
new_g.push_back(gen_uni(g[i]));
}
swap(new_g,g);
}

AC代码

AC
http://codeforces.com/contest/2205/submission/365031780

心路历程(WA,TLE,MLE……)