#P7211. [JOISC2020] カメレオンの恋

    ID: 6005 Type: RemoteJudge 1998ms 500MiB Tried: 0 Accepted: 0 Difficulty: 7 Uploaded By: Tags>2020交互题Special JudgeO2优化JOI

[JOISC2020] カメレオンの恋

题目背景

您可以在如下的代码模板中编写程序:

#include<bits/stdc++.h>
using namespace std;
extern "C" int Query(const std::vector<int> &p);
extern "C" void Answer(int a, int b);
extern "C" void Solve(int N) {
	
}

题目描述

在 JOI 动物园中,有 2×N2\times N 只变色龙,有 NN 只的性别为 X\rm X,另外 NN 只的性别为 Y\rm Y

每一只变色龙均有其原始颜色,其约束如下:

  • X\rm X 性别的变色龙颜色两两不同。
  • 对于每一只 X\rm X 性别的变色龙,都有一只 Y\rm Y 性别的变色龙颜色与之相同。

现在每一只变色龙都爱另一只变色龙了,具体规则如下:

  • 每一只变色龙只爱异性变色龙。
  • 每只变色龙与其喜欢的变色龙有不同的初始颜色。
  • 不会存在两只变色龙爱一只变色龙。

现在您可以组织一些变色龙开会,对于每一只在会议中的变色龙 ss,设 ss 爱的变色龙为 tt

  • tt 参加会议,则 ss 的皮肤颜色为 tt 的原始颜色。
  • 否则,ss 的皮肤颜色为 ss 的原始颜色。

对于您组织的每次会议,您可以统计不同的肤色数量。

通过召开不超过 2×1042\times 10^4 次会议,您要确定初始颜色相同的每一对变色龙。

交互细节

您需要在程序前声明两个函数:

  • int Query(const std::vector<int> &p)
  • void Answer(int a, int b)

您需要实现一个函数:void Solve(int N)

  • 每个测试样例仅调用一次。
  • NN 的意义如题。

你的程序可以调用如下函数:

  • int Query(const std::vector<int> &p)

    • 您可以调用此函数来组织变色龙会议。
      • pp 是参加会议的变色龙名单。
      • 这会返回参加会议的变色龙颜色的种数。
      • 所有 pp 内的数必须在 112×N2\times N 之间,不然会返回 Wrong Answer [1]
      • 所有 pp 内的数必须是两两不同的,不然会返回 Wrong Answer [2]
      • 您只能调用此函数 2×1042\times 10^4 次,若超过,会返回 Wrong Answer [3]
  • void Answer(int a, int b)

    • 调用这个函数来提交一对原始颜色相同的变色龙。
      • 参数 aabb 表示变色龙 aabb 具有相同的初始颜色。
      • 您需要保证 1a,b2×N1\le a,b\le 2\times N,否则会返回 Wrong Answer [4]
      • 您需要保证每一次提交的变色龙不同,否则会返回 Wrong Answer [5]
      • 如果您提交的 aabb 的初始颜色不同,会返回 Wrong Answer [6]
      • 您需要调用 NN 次该函数,否则会返回 Wrong Answer [7]

如果您在交互过程中均未违反限制,恭喜您 AC 了。

输入格式

交互库输入格式如下:

第一行为一个整数 NN

第二行为 2×N2\times N 个整数 YiY_i,表示变色龙的性别,Yi=0Y_i=0,则性别为 X\rm XYi=1Y_i=1,则性别为 Y\rm Y

第三行为 2×N2\times N 个整数 CiC_iCiC_i 表示变色龙 ii 的颜色。

第四行为 2×N2\times N 个整数 LiL_iLiL_i 表示变色龙 ii 稀饭变色龙 LiL_i

输出格式

交互库输出格式如下:

若您 AC 了,则输出一行 Accepted: xxx 是您调用 int Query(const std::vector<int> &p) 的次数。

若您 WA 了,则输出一行 Wrong Answer [type]typetype 是您 WA 的原因,可参照交互细节。

4
1 0 1 0 0 1 1 0
4 4 1 2 1 2 3 3
4 3 8 7 6 5 2 1

提示

样例解释

样例调用如下: | 交互库调用 | 你的调用 | 返回值 | | :-: | :-: | :-:| | Solve(4) | | | | | Query([]) | 00 | | | Query([6, 2]) | 22 | | | Query([8, 1, 6]) | 22 | | | Query([7, 1, 3, 5, 6, 8]) | 44 | | | Query([8, 6, 4, 1, 5]) | 33 | | | Answer(6, 4) | | | | Answer(7, 8) | | | | Answer(2, 1) | | | | Answer(3, 5) | |

sample-02.txt 符合 Subtask 1 的限制,sample-03.txt 符合 Subtask 4 的限制。

子任务

对于 100%100\% 的数据,保证 2N5002\le N\le 5000Yi10\le Y_i\le 11CiN1\le C_i\le N1Li2×N1\le L_i\le 2\times NYiYLiY_i\not=Y_{L_i}CiCLiC_i\not=C_{L_i}LL 两两不同。

子任务 特殊性质 分数
11 LLi=i(1i2×N)L_{L_i}=i (1\le i\le 2\times N) 44
22 N7N\le 7 2020
33 N50N\le 50
44 Yi=0(1iN)Y_i=0 (1\le i\le N)
55 3636

说明

本题译自 第 19 回日本情報オリンピック 春季トレーニング合宿 Day 2 T1 カメレオンの恋