在JOI动物园里有
每个变色龙都有自己的原色。变色龙的原色具有以下性质:
- 同性变色龙的原色是两两不同的。
- 每只变色龙都有一只原色相同的异性变色龙。
现在,JOI动物园到了爱情的季节。每只变色龙都爱另一只变色龙。变色龙的爱具有以下性质:
- 每只变色龙恰好爱一只异性变色龙。
- 每只变色龙爱的变色龙和它自己原色不同。
- 所有变色龙爱的变色龙两两不同。
你可以聚集一些变色龙组织一场见面会。对每只参加见面会的变色龙
- 如果
也参加了见面会, 的颜色是 的原色。 - 否则,
的颜色是 的原色。
变色龙的颜色在不同的见面会中可能不保持一致。对于每场见面会,你可以数出参加的变色龙有多少不同的颜色。
你想通过举行至多
实现细节
你的程序需要包含chameleon.h
。
- 要实现函数
void Solve(int N)
这个函数在每个测试点中会被调用恰好一次。
你的程序可以调用以下函数:
- `int Query(const std::vector &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]
。
重要提示
- 你的程序可以定义全局变量或其他函数。
- 你的程序不需要也不应该访问标准输入输出,也不应该访问任何文件。
本机测试的方法
将grader.cpp
和chameleon.cpp
,chameleon.h
放在当前目录下,运行
g++ -std=gnu++14 -O2 -o grader grader.cpp chameleon.cpp
当编译成功时,文件grader
将被生成。
样例交互库的输入格式
样例交互库从标准输入读取以下数据:
样例交互库的输出格式
当你的程序顺利结束时,样例交互库将向标准输出写入以下内容:
- 如果你的程序运行结果正确,将输出你的程序调用
Query
的次数。比如Acepted: 100
- 如果你的程序答案错误,将输出错误类型。比如
Wrong Answer [1]
如果你的程序同时触发了多种类型的错误,交互库只会报告其中的一种。
限制与约定
- 对任意
,有且仅有一个 使 - 对任意
,有且仅有一个 使
子任务
- (4 分)
- (20 分)
- (20 分)
- (20 分)
- (36 分) 没有特殊限制