#A904. 取石子游戏2
取石子游戏2
问题描述
取石子游戏是一种经典的博弈游戏,通常由两个人轮流进行。石子有很多堆,在游戏过程中,玩家可以选择在某一堆中取走任意颗石子。游戏的最终目标是把所有石子全部取完,最后取完石子的一方获胜(无法取石子的失败)。
光头强会与你玩 轮游戏,每次有 堆石子,每堆石子有 颗。你需要告诉他你想先手还是后手。
0
表示你选择先手,1
表示你选择后手。
之后光头强会按照你选择的先后手与你玩游戏。
如果你选择先手,此时你应当立即输出两个数,表示你取的石子堆的编号以及你取几个石子,然后光头强也告诉你两个数,表示他的策略。如此反复。 反之亦然。
如果光头强无石子可取,他会认输,并向你输出 -1 -1
。之后开启下一轮游戏。如果光头强获胜了,他会直接嘲讽你并结束游戏。
你的目标是在每一轮都击败光头强!
询问方式
第一行光头强会给出一个整数 ,表示游戏的总轮次。
询问方式如前面所述。首先由光头强给出石子总堆数 ,下面一行会有 个数表示每堆石子的数量。
由你选择先手还是后手。之后按照先后顺序依次取石子。
系统输出
第一行是一个整数 ,表示测试数据的组数。每组测试数据,系统首先输出两个整数 ,,表示该组测试数据的石子数和每次最多能取几个,然后你可以按规定进行交互。
依照你选定的个先后顺序,系统会在合适的时候给出他的选择。
数据保证单个测试点有 。
样例
3
1
10
-1 -1
2
6 6
1 4
2 2
-1 -1
3
2 2 3
3 1
2 2
-1 -1
0
1 10
1
2 4
1 2
0
1 1
1 1
3 2
样例说明
注意,上述空行是为了展示方便,实际系统输出并没有。后台采取忽略空格和空行的读取方式,你也不需要输出空行。
Case1:可以一次拿完。
- 选择先手,一次拿完。
Case2:两堆一样,模仿即可。
- 选择后手,会拿到最后一个。
Case3:有不止一种方案。
- 第一把直接拿完最后一堆也行。
注意事项。
光头强没有耐心,所以即便你有很正确的策略,但是思考太久他也会嘲讽你。
如果使用带缓冲的输出,务必进行flush,否则可能导致后台交互器不能即时读取到数据导致超时。
为方便调试,如果你申请了不合法的数字或者输掉了游戏,系统会输出 -2 -2
,因此如果你读取到 -2 -2
,说明是已经失败了,你可以直接结束程序以获取错误信息,否则后续交互可能会因为无法进行导致RE,从而无法获取错误信息。