#10000030. 【NOI 2024 Day 1】集合(set)

内存限制:512 MiB 时间限制:1000 ms 输入文件:set.in 输出文件:set.out
题目类型:传统 评测方式:文本比较
上传者: Holmium_Oxide

题目描述

题目名称 集合
题目类型 传统型
目录 set
可执行文件名
输入文件名 set.in
输出文件名 set.out
每个测试点时限  秒
内存限制
测试点数目
测试点是否等分 是
预测试点数目

提交源程序文件名

对于 C++ 语言 set.cpp

小 Y 和小 S 在玩一个游戏。 给定正整数 ,定义基本集合为大小为 、元素在 内的集合。例如,给定 ,则集合 与集合 都是基本集合。

定义集合序列为由基本集合构成的序列。例如, 是一个集合序列,其中 都是基本集合。

对于一个 的排列 与集合 ,定义 为将 内每一个元素 置换为 后的所得到的集合,即 。

对于两个长度为 的集合序列 ,定义 和 等价当且仅当存在一个 的排列 ,使得 置换排列 后得到 ,即对于所有 ,。

给定两个长度为 的集合序列 。有 次询问:每次小 S 会询问小 Y,在给定 的情况下,判断集合序列 与集合序列 是否等价?

时光荏苒,小 S 和小 Y 也会散去。而我们和一个人保持连接的方式就是记住,仅此而已。

输入格式

从文件 中读入数据。

输入的第一行包含三个正整数 ,分别表示集合序列的长度、元素范围和询问次数。

输入的第二行包含 个正整数。第 ()个正整数分别表示 的三个元素。保证这三个元素均在 范围内且互不相同。

输入的第三行包含 个正整数。第 ()个正整数分别表示 的三个元素。保证这三个元素均在 范围内且互不相同。

接下来 行,每行包含两个正整数 ,表示一次询问。

输出格式

输出到文件 中。

输出 行,每行包含一个字符串 Yes 或 No,表示对应询问的两个序列是否等价。

样例

【样例 输入】

4 4 10
1 2 3 1 2 3 1 2 4 1 2 3
1 2 4 2 3 4 1 2 3 2 3 4
1 1
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4
4 4

【样例 输出】

Yes
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes

【样例 解释】

以下用 表示对 的询问。

  • 对于询问 ,令排列 ,则 ,因此该询问对应的两个序列等价。

  • 对于询问 ,由于 但 ,因此这些询问对应的两个序列都不等价。

  • 对于询问 ,令排列 ,则 ,,,因此这些询问对应的两个序列都等价。

【样例 】

见选手目录下的 与 。 这个样例满足测试点 的约束条件。

【样例 】

见选手目录下的 与 。 这个样例满足测试点 的约束条件。

【样例 】

见选手目录下的 与 。 这个样例满足测试点 的约束条件。

数据范围与提示

【数据范围】

对于所有测试数据保证:,,,。

测试点编号