#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
有 篇博客。第 篇博客按顺序提到了 个用户,记为数组 。
你需要发布全部 篇博客。我们维护一个序列 ,用来记录最近被提到的用户列表。你需要恰好执行 次下面的操作:
- 选择一篇还没有发布的博客 (),然后发布它。发布时,按顺序对每一个 执行:
- 如果 已经在 中,就把 移动到 的最前面。
- 否则,将 插入到 的最前面。
求所有 次操作完成后,字典序最小的 。
数组 字典序小于数组 ,当且仅当满足下面二者之一:
- 是 的前缀,且 ;
- 在 和 第一个不相同的位置上, 在该位置的元素更小。
输入格式
每个测试点包含多组测试用例。第一行一个整数 (),代表测试用例数量。接下来是每组测试用例的描述。
第一行一个整数 ()——博客的数量。
接下来 行,第 行开头是整数 (),表示该博客提到的用户数量,之后跟着 个整数 ()——这篇博客依次提到的用户。
保证所有测试用例的 之和不超过 。
记 为 ,保证所有测试用例的 之和不超过 。
输出格式
记 为至少在一篇博客中出现过的不同用户数量。对每组测试用例,输出 个整数 ,即字典序最小的 。
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
说明
在第一个测试用例中,可以按如下顺序发布博客:
- 发布第一篇博客, 变为 。
- 发布第三篇博客, 变为 。
- 发布第二篇博客, 变为 。
还有另一种发布方式:
- 发布第三篇博客, 变为 。
- 发布第一篇博客, 变为 。
- 发布第二篇博客, 变为 。
可以看到 的字典序更小。如果不把第二篇博客放在最后发布,序列第一个元素就无法是 ,因此 就是字典序最小的序列。
在第二个测试用例中,可以按如下顺序发布博客:
- 发布第一篇博客, 变为 。
- 发布第二篇博客, 保持 不变。
第三个测试用例只有一篇博客,发布之后 为 。