#D0651. [DAY28]九张牌

[DAY28]九张牌

这是一道交互式题目。

题目描述

33DAI 想到一个有意思的游戏,他在做了 99 张小卡片,上面分别写着数字 191\sim 9

他想你陪他玩一个游戏,两个人轮流抽卡,他先手。

  • 如果某个时刻他抽到的卡能选出三张使得和为 1515,你就输了游戏立即结束
  • 如果某个时刻你抽到的卡能选出三张使得和为 1515,你就赢了游戏立即结束
  • 如果直到最后,两个人都没法选出三张使得和为 1515,游戏平局

你应该避免输的结果,请你想想怎么抽卡可以让他赢不了。

2025/10/27 题面修改:加粗的部分是添加的描述,之前的题面描述有点小问题,如果 33DAI 不用防守的话是可以必胜的,感谢 @ @ 的反馈。

交互格式

首先,你的程序需要从标准输入读取一个整数 a0a_0,这是 33DAI 抽的第一张牌。

然后要进行四轮抽牌,第 ii 轮按下面流程执行:

  • 你输出你要抽的牌 bib_i,换行并刷新缓冲区结束。
  • 通过输入得到 33DAI 抽的下一张牌 aia_i

在 C++ 中,cout 可以使用 cout.flush(); 刷新,或 endl 实现换行并刷新,printf 可以使用 fflush(stdout); 来强制刷新缓冲区。

如果你的 44 次抽牌没有矛盾,且最终 33DAI 抽的牌中没法选出三张和为 1515,那可以通过对应的测试点。

1
2
3
4
5
6
7
8
9

这是一个例子,33DAI 每次只抽最小的牌,他失败了。但测试样例中 33DAI 可能会聪明得多。

数据规模与约定

  • 子任务 1(30 分):33DAI 每次都会抽取当前还存在的最小的牌。
  • 子任务 2(30 分):33DAI 每次都会抽取当前还存在的最大的牌。
  • 子任务 3(40 分):33DAI 有点聪明,会用很好的策略。

这个游戏可以保证 33DAI 赢不了。