emmmmm大致题意就是给你连续的n个格子,编号1到n,开始所有的格子都是空的,两个人轮流往空格子里放字母s或者o,谁先使得相邻的三个格子里字母为sos则谁获胜,假设A先手,B后手问谁会赢,如果所有格子都被填满了但是没有出现sos则认为两人平局。
思路:
一开始看到这题本来我想用状压啊,sg函数啊什么的去写,但是gg,于是就先扔一旁了,后来卡题的时候看榜单发现有一些奇奇怪怪的队伍过了这题,于是就觉得这题会不会是个傻逼题,然后对着样例自己和自己下,发现如果此时格局为S _ _ S时,谁先手谁必输,所以如果当前先手能赢,那么必定是要去构造这样的情况,然后留给后手。样例很给力呀,已经把最基本的情况给我们了,当格子数为7的时候,先手第一步在4号格子放s,接下来不论对方怎么弄,先手都能构造出一个S _ _ S的情况留给对方,所以先手必胜,小于7的格子数,必定是平局。 接下来慢慢增加格子的数量,不难发现,当格子数为偶数时,先手不能取胜,所以我们尽量去打平局的情况(当时推了一下前面的偶数情况先手都能打平然后就没再考虑了。。背锅),但如果是奇数,先手还是在最中间的位置放个s,然后局面就分成了左半部和右半部,然后接下来一定能构造出一个S _ _ S的局面并且满足剩余空格子的数量为偶数且轮到对方走,那么最后留给对方的一定是一个S _ _ S局面,所以先手必胜。当时想到这里我就控制不住自己了然后猜了一下偶数平局,奇数先手赢,上去敲了一发,然后就wa了。。。冷静下来后想想,格子数量多了怎么可能后手不会赢,而且如果就这样简单的话应该已经榜切了呀。。。