Alice and Bob
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
这是一道交互题,你如果不太了解该题型,可以阅读 有关I/O交互题型的介绍 一文
Qsy 给了 Alice 一个包含 个不同整数的集合 :()。Alice 决定用这个集合和 Bob 玩一个游戏。游戏规则如下:
玩家轮流行动,Alice 先手。
在 Alice 的回合中,她向集合 中添加一个数字 ()。添加时,集合 中不能已包含数字 。
在 Bob 的回合中,他从集合 中移除一个数字 。移除时,集合 中必须包含数字 。此外,数字 必须严格小于 Alice 上一次添加的数字。
当 Bob 无法进行移动或总移动次数达到 次时(此时 Alice 的移动将是最后一次),游戏结束。
游戏的结果是 (游戏结束时集合 的 )。
Alice 的目标是最大化结果,而 Bob 的目标是最小化结果。
设 为双方都采取最优策略时的结果。在此问题中,你将扮演 Alice,与扮演 Bob 的判题程序对抗。 你的任务是为 Alice 实现一个策略,使得游戏的结果总是至少为 。
整数集合 的 定义为集合中未出现的最小非负整数 。例如,。
输入格式
第一行包含一个整数 ()——测试用例的数量。 交互
你的程序与判题程序的交互从读取一个整数 ()开始,表示游戏开始前集合 的大小。
接着,读取一行—— 个不同的整数 (),表示给 Alice 的初始集合 。
要执行一次移动,请输出一个整数 ()——你想添加到集合 中的数字。此时集合 中不能包含 。然后,读取一个整数 ()。
如果 ,表示 Bob 从集合 中移除了数字 。现在轮到你了!
如果 ,表示游戏结束。之后,继续处理下一个测试用例,或者如果是最后一个测试用例则终止程序。
否则,。这表示你的查询无效。你的程序应立即终止,否则可能会收到 Wrong Answer 的判决。
在输出查询后,请勿忘记输出行尾并刷新输出。否则,你将收到 Idleness limit exceeded。为此,请使用:
在 C++ 中使用 fflush(stdout) 或 cout.flush();
在 Java 中使用 System.out.flush();
在 Pascal 中使用 flush(output);
在 Python 中使用 stdout.flush();
其他语言请参考相关文档。
保证所有测试用例的 的总和不超过 。
样例
3
5
1 2 3 5 7
7
5
-1
3
0 1 2
0
-1
3
5 7 57
-1
8
57
0
3
0
0
限制与提示
在第一个测试用例中,集合 的变化如下:
{} {} {} {} {} {}。游戏结束时,,。
在第二个测试用例中,集合 的变化如下:
{} {} {} {}。游戏结束时,,。
在第三个测试用例中,集合 的变化如下:
{} {}。游戏结束时,,。
2026 XAUT 西安理工大学新生赛-同步赛 & XJSACM Round 1
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 15
- 开始于
- 2026-1-11 13:00
- 结束于
- 2026-1-11 18:00
- 持续时间
- 5 小时
- 主持人
- 参赛人数
- 6