#P10609. 排除干扰
排除干扰
题目背景
其实,莲子有所不知的是,梅莉早在几周前就瞒着她一个人去探险,至今未归。得知了此事的莲子后悔万分。
为了找到失踪的梅莉,莲子独自前去梅莉家寻找线索,但她翻箱倒柜却仍一无所获。
“该怎么办啊!要是能排除干扰,找到有用的线索就好了。对了,那就以梅莉的视角想想吧!”
题目描述
这是一道交互题。
为了同时从两者的角度思考,莲子在内心构想了一场博弈,而主角则仍是小 R 与小 M,规则如下:
小 R 和小 M 初始均有 张牌,牌共有 类,编号为 到 。保证她们初始拥有每类牌至少一张。她们可以互相看见手牌。
小 R 和小 M 轮流弃牌,其中小 R 为先手。每回合她们都要丢弃恰好一张牌。当她们均把牌弃到只剩一张时,假设小 R 的牌为 ,小 M 的牌为 ,那么小 R 获得的分数为 ,小 M 获得的分数为 。她们都希望自己的得分尽可能高。
现在,你需要和交互库模拟一局游戏,若 ,你将扮演小 R;若 ,你将扮演小 M。你取得的分数至少需要达到双方均以最优策略决策时所得到的分数。
输入格式
第一行三个整数 ,它们的含义都与题目描述相同。
接下来的 行,每行 个整数,描述矩阵 。第 行第 列的元素为 。
接下来共两行,每行 个整数。对于第一行,其中第 个整数 代表小 R 初始拥有多少张第 类的牌。对于第二行,第 个整数 代表小 M 初始拥有多少张第 类的牌。保证有 。
接下来进入交互过程:
- 如果轮到对手(交互库)操作,你可以读入一个正整数 ,代表对手该回合丢弃了一张第 类的牌。
- 如果轮到你操作,你需要输出一个正整数 ,代表你该回合丢弃了一张第 类的牌。
- 如果游戏结束(两人均只剩一张牌)且你取得的分数不是最优/你进行了不合法的操作,你需要读入一个
-1
后退出程序。 - 如果游戏结束且你取得的分数是最优,你需要读入一个
0
后退出程序。
注意:在交互过程中,你需要在输出后刷新缓存区,下面是一些常见语言的刷新缓存区方式:
- C++:
fflush(stdout)
或cout.flush()
。 - C:
fflush(stdout)
。 - Java:
System.out.flush()
。 - Python:
stdout.flush()
。 - Pascal:
flush(output)
。 - 其他语言:请参考对应语言的帮助文档。
输出格式
见「输入格式」。
2 2 0
1 0
1 1
1 1
1 1
2
0
1
2 2 0
2 3
3 4
1 1
1 1
2
0
1
2 3 1
1 -2
-1 2
1 2
2 1
1
2
0
1
2
提示
样例解释
样例 #1
你将扮演小 R(先手)游玩。假设你丢弃一张 类牌,对手丢弃一张 类牌,最终你的得分即为 。可以证明,得分 即为最优得分。
注意到该样例同时符合特殊性质 和 。
样例 #2
你将扮演小 R(先手)游玩。可以证明,最终小 R 的得分 即为最优得分。
注意到该样例符合特殊性质 。
样例 #3
你将扮演小 M(后手)游玩。可以证明,最终小 M 的得分 即为最优得分。
数据范围
本题采用捆绑测试。
$$\def\arraystretch{1.5} \begin{array}{|c|c|c|c|c|c|}\hline \textbf{Subtask} & \textbf{\textsf{分值}} & \bm{n\le} & \bm{m\le} & \textbf{\textsf{特殊性质}}&\textbf{Subtask \textsf{依赖}}\cr\hline 1 & 20 & 5 & 5 & - &-\cr\hline 2 & 15 & 10^3 & 10^4 & \mathbf{A}&- \cr\hline 3 & 20 & 10^3 & 10^4 & \mathbf{B}&- \cr\hline 4 & 20 & 10^3 & 10^3 & \mathbf C&- \cr\hline 5 & 25 & 10^3 & 10^4 & -&1,2,3,4 \cr\hline \end{array} $$特殊性质 :保证 。
特殊性质 :保证 中只出现 和 。
特殊性质 :保证每人初始拥有每类牌恰好一张。
对于所有数据满足:,,, 且 。保证交互库进行的操作均合法。