脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest

时间:2022-08-19 07:24:23

题目链接:http://codeforces.com/gym/101350/problem/E

题目大意:给你一个长度为n的方格,方格上面都被染色成了白色。每次染色都是选择白色的,假设目前选择的这块白色(白色联通块)的长度为L,每次都只能选择<=(L+1)/2的素数染色。问谁赢?

思路:果然博弈不会啊,感谢这位神牛:链接

当n=2||n=3先手必败

其余的n必胜,n=1就不解释了。当n>=4的时候,如果是奇数,那么每次都取出中间两个,如果是偶数,每次都取出中间三个,然后对称取即可。

//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n") int main(){
int t; cin >> t;
while (t--){
int n; scanf("%d", &n);
if (n == || n == ) puts("second");
else puts("first");
}
return ;
}