P7211 [JOISC 2020] カメレオンの恋

题目背景

您可以在如下的代码模板中编写程序: ```cpp #include using namespace std; extern "C" int Query(const std::vector &p); extern "C" void Answer(int a, int b); extern "C" void Solve(int N) { } ```

题目描述

在 JOI 动物园中,有 $2\times N$ 只变色龙,有 $N$ 只的性别为 $\rm X$,另外 $N$ 只的性别为 $\rm Y$。 每一只变色龙均有其原始颜色,其约束如下: - $\rm X$ 性别的变色龙颜色两两不同。 - 对于每一只 $\rm X$ 性别的变色龙,都有一只 $\rm Y$ 性别的变色龙颜色与之相同。 现在每一只变色龙都爱另一只变色龙了,具体规则如下: - 每一只变色龙只爱异性变色龙。 - 每只变色龙与其喜欢的变色龙有不同的初始颜色。 - 不会存在两只变色龙爱一只变色龙。 现在您可以组织一些变色龙开会,对于每一只在会议中的变色龙 $s$,设 $s$ 爱的变色龙为 $t$。 - 若 $t$ 参加会议,则 $s$ 的皮肤颜色为 $t$ 的原始颜色。 - 否则,$s$ 的皮肤颜色为 $s$ 的原始颜色。 对于您组织的每次会议,您可以统计不同的肤色数量。 通过召开不超过 $2\times 10^4$ 次会议,您要确定初始颜色相同的每一对变色龙。 #### 交互细节 您需要在程序前声明两个函数: - `int Query(const std::vector &p)`。 - `void Answer(int a, int b)`。 您需要实现一个函数:`void Solve(int N)`。 - 每个测试样例仅调用一次。 - $N$ 的意义如题。 你的程序可以调用如下函数: - `int Query(const std::vector &p)` - 您可以调用此函数来组织变色龙会议。 - $p$ 是参加会议的变色龙名单。 - 这会返回参加会议的变色龙颜色的种数。 - 所有 $p$ 内的数必须在 $1$ 到 $2\times N$ 之间,不然会返回 `Wrong Answer [1]`。 - 所有 $p$ 内的数必须是两两不同的,不然会返回 `Wrong Answer [2]`。 - 您只能调用此函数 $2\times 10^4$ 次,若超过,会返回 `Wrong Answer [3]`。 - `void Answer(int a, int b)` - 调用这个函数来提交一对原始颜色相同的变色龙。 - 参数 $a$ 和 $b$ 表示变色龙 $a$ 和 $b$ 具有相同的初始颜色。 - 您需要保证 $1\le a,b\le 2\times N$,否则会返回 `Wrong Answer [4]`。 - 您需要保证每一次提交的变色龙不同,否则会返回 `Wrong Answer [5]`。 - 如果您提交的 $a$ 和 $b$ 的初始颜色不同,会返回 `Wrong Answer [6]`。 - 您需要调用 $N$ 次该函数,否则会返回 `Wrong Answer [7]`。 如果您在交互过程中均未违反限制,恭喜您 AC 了。

输入格式

交互库输入格式如下: 第一行为一个整数 $N$。 第二行为 $2\times N$ 个整数 $Y_i$,表示变色龙的性别,$Y_i=0$,则性别为 $\rm X$,$Y_i=1$,则性别为 $\rm Y$。 第三行为 $2\times N$ 个整数 $C_i$,$C_i$ 表示变色龙 $i$ 的颜色。 第四行为 $2\times N$ 个整数 $L_i$,$L_i$ 表示变色龙 $i$ 稀饭变色龙 $L_i$。

输出格式

交互库输出格式如下: 若您 AC 了,则输出一行 `Accepted: x`,$x$ 是您调用 `int Query(const std::vector &p)` 的次数。 若您 WA 了,则输出一行 `Wrong Answer [type]`,$type$ 是您 WA 的原因,可参照交互细节。

说明/提示

#### 样例解释 样例调用如下: | 交互库调用 | 你的调用 | 返回值 | | :-: | :-: | :-:| | `Solve(4)` | | | | | `Query([])` | $0$ | | | `Query([6, 2])` | $2$ | | | `Query([8, 1, 6])` | $2$ | | | `Query([7, 1, 3, 5, 6, 8])` | $4$ | | | `Query([8, 6, 4, 1, 5])` | $3$ | | | `Answer(6, 4)` | | | | `Answer(7, 8)` | | | | `Answer(2, 1)` | | | | `Answer(3, 5)` | | `sample-02.txt` 符合 Subtask 1 的限制,`sample-03.txt` 符合 Subtask 4 的限制。 #### 子任务 对于 $100\%$ 的数据,保证 $2\le N\le 500$,$0\le Y_i\le 1$,$1\le C_i\le N$,$1\le L_i\le 2\times N$,$Y_i\not=Y_{L_i}$,$C_i\not=C_{L_i}$,$L$ 两两不同。 | 子任务 | 特殊性质 | 分数 | | :-: | :-: | :-: | | $1$ | $L_{L_i}=i (1\le i\le 2\times N)$ | $4$ | | $2$ | $N\le 7$ | $20$ | | $3$ | $N\le 50$ | $20$ | | $4$ | $Y_i=0 (1\le i\le N)$ | $20$ | | $5$ | 无 | $36$ | #### 说明 本题译自 [第 19 回日本情報オリンピック 春季トレーニング合宿](https://www.ioi-jp.org/camp/2020/2020-sp-tasks/index.html) Day 2 [T1 カメレオンの恋](https://www.ioi-jp.org/camp/2020/2020-sp-tasks/day2/chameleon-en.pdf)。