A6751 | 「NOI2024」集合
来源NOI
时间限制1s
内存限制512MB
通过 / 提交0/0
题目描述
小 Y 和小 S 在玩一个游戏。
给定正整数 $m$,定义**基本集合**为大小为 $3$,元素在 $1\sim m$ 内的集合。例如:给定 $m=4$,则集合 $\{1,2,3\}$ 与集合 $\{2,3,4\}$ 都是基本集合。
定义**集合序列**为由基本集合构成的序列,例如,$A=[\{1,2,3\},\{2,3,4\}]$ 是一个集合序列,其中 $A[1]=\{1,2,3\}$,$A[2]=\{2,3,4\}$ 都是基本集合。
对于一个 $1\sim m$ 的排列 $p[1],p[2],\dots,p[m]$ 与集合 $S\subseteq \{1,2,\dots,m\}$,定义 $f_p(S)$ 为将 $S$ 内每一个元素 $x$ 置换为 $p[x]$ 后所得到的集合,即 $f_p(S)=\{p[x]|x\in S\}$。
对于两个长度为 $k$ 的集合序列 $A,B$,定义 $A$ 和 $B$ **等价**当且仅当存在一个 $1\sim m$ 的排列 $p$,使得 $A$ 置换排列 $p$ 后得到 $B$,即对于所有 $1\leq i\leq k$,$f_p(A[i])=B[i]$。
给定两个长度为 $n$ 的集合序列 $A,B$,有 $q$ 次询问。每次小 S 会询问小 Y,在给定 $l,r$ 的情况下,判断集合序列 $[A[l],A[l+1],\dots,A[r]]$ 与集合序列 $[B[l],B[l+1],\dots,B[r]]$ 是否等价。
时光荏苒,小 S 和小 Y 也会散去。而我们和一个人保持连接的方式就是记住,仅此而已。
给定正整数 $m$,定义**基本集合**为大小为 $3$,元素在 $1\sim m$ 内的集合。例如:给定 $m=4$,则集合 $\{1,2,3\}$ 与集合 $\{2,3,4\}$ 都是基本集合。
定义**集合序列**为由基本集合构成的序列,例如,$A=[\{1,2,3\},\{2,3,4\}]$ 是一个集合序列,其中 $A[1]=\{1,2,3\}$,$A[2]=\{2,3,4\}$ 都是基本集合。
对于一个 $1\sim m$ 的排列 $p[1],p[2],\dots,p[m]$ 与集合 $S\subseteq \{1,2,\dots,m\}$,定义 $f_p(S)$ 为将 $S$ 内每一个元素 $x$ 置换为 $p[x]$ 后所得到的集合,即 $f_p(S)=\{p[x]|x\in S\}$。
对于两个长度为 $k$ 的集合序列 $A,B$,定义 $A$ 和 $B$ **等价**当且仅当存在一个 $1\sim m$ 的排列 $p$,使得 $A$ 置换排列 $p$ 后得到 $B$,即对于所有 $1\leq i\leq k$,$f_p(A[i])=B[i]$。
给定两个长度为 $n$ 的集合序列 $A,B$,有 $q$ 次询问。每次小 S 会询问小 Y,在给定 $l,r$ 的情况下,判断集合序列 $[A[l],A[l+1],\dots,A[r]]$ 与集合序列 $[B[l],B[l+1],\dots,B[r]]$ 是否等价。
时光荏苒,小 S 和小 Y 也会散去。而我们和一个人保持连接的方式就是记住,仅此而已。
输入格式
从文件
输入的第一行包含三个正整数 $n,m,q$,分别表示集合序列的长度,元素范围和询问次数。
输入的第二行包含 $3n$ 个正整数,第 $3i-2,3i-1,3i$($1\leq i\leq n$)个正整数分别表示 $A[i]$ 的三个元素。保证这三个元素均在 $[1,m]$ 范围内且互不相同。
输入的第三行包含 $3n$ 个正整数,第 $3i-2,3i-1,3i$($1\leq i\leq n$)个正整数分别表示 $B[i]$ 的三个元素。保证这三个元素均在 $[1,m]$ 范围内且互不相同。
接下来 $q$ 行,每行包含两个正整数 $l,r$,表示一次询问。
set.in 中读入数据。输入的第一行包含三个正整数 $n,m,q$,分别表示集合序列的长度,元素范围和询问次数。
输入的第二行包含 $3n$ 个正整数,第 $3i-2,3i-1,3i$($1\leq i\leq n$)个正整数分别表示 $A[i]$ 的三个元素。保证这三个元素均在 $[1,m]$ 范围内且互不相同。
输入的第三行包含 $3n$ 个正整数,第 $3i-2,3i-1,3i$($1\leq i\leq n$)个正整数分别表示 $B[i]$ 的三个元素。保证这三个元素均在 $[1,m]$ 范围内且互不相同。
接下来 $q$ 行,每行包含两个正整数 $l,r$,表示一次询问。
输出格式
输出到文件
输出 $q$ 行,每行包含一个字符串
set.out 中。输出 $q$ 行,每行包含一个字符串
Yes 或 No,表示对应询问的两个序列是否等价。输入输出样例
输入 #1
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
输出 #1
Yes No No No Yes Yes Yes Yes Yes Yes
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?