#D0651. [DAY28]九张牌
[DAY28]九张牌
这是一道交互式题目。
题目描述
33DAI 想到一个有意思的游戏,他在做了 张小卡片,上面分别写着数字 。
他想你陪他玩一个游戏,两个人轮流抽卡,他先手。
- 如果某个时刻他抽到的卡能选出三张使得和为 ,你就输了游戏立即结束。
- 如果某个时刻你抽到的卡能选出三张使得和为 ,你就赢了游戏立即结束。
- 如果直到最后,两个人都没法选出三张使得和为 ,游戏平局。
你应该避免输的结果,请你想想怎么抽卡可以让他赢不了。
2025/10/27 题面修改:加粗的部分是添加的描述,之前的题面描述有点小问题,如果 33DAI 不用防守的话是可以必胜的,感谢 @ @ 的反馈。
交互格式
首先,你的程序需要从标准输入读取一个整数 ,这是 33DAI 抽的第一张牌。
然后要进行四轮抽牌,第 轮按下面流程执行:
- 你输出你要抽的牌 ,换行并刷新缓冲区结束。
- 通过输入得到 33DAI 抽的下一张牌 。
在 C++ 中,cout 可以使用 cout.flush(); 刷新,或 endl 实现换行并刷新,printf 可以使用 fflush(stdout); 来强制刷新缓冲区。
如果你的 次抽牌没有矛盾,且最终 33DAI 抽的牌中没法选出三张和为 ,那可以通过对应的测试点。
1
2
3
4
5
6
7
8
9
这是一个例子,33DAI 每次只抽最小的牌,他失败了。但测试样例中 33DAI 可能会聪明得多。
数据规模与约定
- 子任务 1(30 分):33DAI 每次都会抽取当前还存在的最小的牌。
- 子任务 2(30 分):33DAI 每次都会抽取当前还存在的最大的牌。
- 子任务 3(40 分):33DAI 有点聪明,会用很好的策略。
这个游戏可以保证 33DAI 赢不了。