#P7211. [JOISC2020] カメレオンの恋
[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 动物园中,有 只变色龙,有 只的性别为 ,另外 只的性别为 。
每一只变色龙均有其原始颜色,其约束如下:
- 性别的变色龙颜色两两不同。
- 对于每一只 性别的变色龙,都有一只 性别的变色龙颜色与之相同。
现在每一只变色龙都爱另一只变色龙了,具体规则如下:
- 每一只变色龙只爱异性变色龙。
- 每只变色龙与其喜欢的变色龙有不同的初始颜色。
- 不会存在两只变色龙爱一只变色龙。
现在您可以组织一些变色龙开会,对于每一只在会议中的变色龙 ,设 爱的变色龙为 。
- 若 参加会议,则 的皮肤颜色为 的原始颜色。
- 否则, 的皮肤颜色为 的原始颜色。
对于您组织的每次会议,您可以统计不同的肤色数量。
通过召开不超过 次会议,您要确定初始颜色相同的每一对变色龙。
交互细节
您需要在程序前声明两个函数:
int Query(const std::vector<int> &p)
。void Answer(int a, int b)
。
您需要实现一个函数:void Solve(int N)
。
- 每个测试样例仅调用一次。
- 的意义如题。
你的程序可以调用如下函数:
-
int Query(const std::vector<int> &p)
- 您可以调用此函数来组织变色龙会议。
- 是参加会议的变色龙名单。
- 这会返回参加会议的变色龙颜色的种数。
- 所有 内的数必须在 到 之间,不然会返回
Wrong Answer [1]
。 - 所有 内的数必须是两两不同的,不然会返回
Wrong Answer [2]
。 - 您只能调用此函数 次,若超过,会返回
Wrong Answer [3]
。
- 您可以调用此函数来组织变色龙会议。
-
void Answer(int a, int b)
- 调用这个函数来提交一对原始颜色相同的变色龙。
- 参数 和 表示变色龙 和 具有相同的初始颜色。
- 您需要保证 ,否则会返回
Wrong Answer [4]
。 - 您需要保证每一次提交的变色龙不同,否则会返回
Wrong Answer [5]
。 - 如果您提交的 和 的初始颜色不同,会返回
Wrong Answer [6]
。 - 您需要调用 次该函数,否则会返回
Wrong Answer [7]
。
- 调用这个函数来提交一对原始颜色相同的变色龙。
如果您在交互过程中均未违反限制,恭喜您 AC 了。
输入格式
交互库输入格式如下:
第一行为一个整数 。
第二行为 个整数 ,表示变色龙的性别,,则性别为 ,,则性别为 。
第三行为 个整数 , 表示变色龙 的颜色。
第四行为 个整数 , 表示变色龙 稀饭变色龙 。
输出格式
交互库输出格式如下:
若您 AC 了,则输出一行 Accepted: x
, 是您调用 int Query(const std::vector<int> &p)
的次数。
若您 WA 了,则输出一行 Wrong Answer [type]
, 是您 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([])
| |
| | Query([6, 2])
| |
| | Query([8, 1, 6])
| |
| | Query([7, 1, 3, 5, 6, 8])
| |
| | Query([8, 6, 4, 1, 5])
| |
| | Answer(6, 4)
| |
| | Answer(7, 8)
| |
| | Answer(2, 1)
| |
| | Answer(3, 5)
| |
sample-02.txt
符合 Subtask 1 的限制,sample-03.txt
符合 Subtask 4 的限制。
子任务
对于 的数据,保证 ,,,,,, 两两不同。
子任务 | 特殊性质 | 分数 |
---|---|---|
无 |
说明
本题译自 第 19 回日本情報オリンピック 春季トレーニング合宿 Day 2 T1 カメレオンの恋。