题目名称 | 4013. [NOI 2024]集合 |
---|---|
输入输出 | set.in/out |
难度等级 | ★★★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 512 MiB |
测试数据 | 20 |
题目来源 | syzhaoss 于2024-09-01加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:0, 提交:0, 通过率:0% | |||
关于 集合 的近10条评论(全部评论) |
---|
小 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 也会散去。而我们和一个人保持连接的方式就是记住,仅此而已。
输入的第一行包含三个正整数 $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$ 行,每行包含一个字符串 $\tt{Yes}$ 或 $\tt{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
样例2满足测试点 1-3 的约束条件。
样例3满足测试点 8 的约束条件。
样例4满足测试点 15、16 的约束条件。
以下用 $(l,r)$ 表示对 $l,r$ 的询问:
· 对于询问 $(1,1)$,令排列 $p=[1,2,4,3]$,则 $f_p(A_1)=\{p[1],p[2],p[3]\}=\{1,2,4\}=B[1]$,因此该询问对应的两个序列等价。
· 对于询问 $(1,2),(1,3),(1,4)$,由于 $A[1]=A[2]$ 但 $B[1]\neq B[2]$,因此这些询问对应的两个序列都不等价。
· 对于询问 $(2,2),(2,3),(2,4),(3,3),(3,4),(4,4)$,令排列 $p=[2,3,4,1]$,则 $f_p(A_2)=\{p[1],p[2],p[3]\}=\{2,3,4\}=B_2$,$f_p(A_3)=\{p[1],p[2],p[4]\}=\{1,2,3\}=B_3$,$f_p(A_4)=\{p[1],p[2],p[3]\}=\{2,3,4\}=B_4$,因此这些询问对应的两个序列都等价。
对于所有测试数据保证:$1\leq n\leq 2\times 10^5$,$3\leq m\leq 6\times 10^5$,$1\leq q\leq 10^6$,$1\leq l\leq r\leq n$。
NOI2024 Day1 Task1