do_while_true

一言(ヒトコト)

「题解」Codeforces GYM 102984 E. Observer Game

必胜条件:判掉先手一步封死 \(2k-1\geq n\) 后,若 \(n\times m\) 为奇数先手胜,否则后手胜。

必胜方要对于所有空的 \(k\times k\) 正方形里面挑出两个不交的(具体挑哪两个是可以根据过程动态变的),然后保证自己棋不下在这两个正方形内。

必败方每次操作之后,如果挑不出来两个不交,必胜方下在这些正方形的交一步就可以赢下比赛;否则,必胜方继续在两个正方形的补集里下棋即可。

对于先手必胜,补集的大小需要为偶数,这样才能使得补集被下满时,对于最后剩下的两个正方形,必败方最后无论占据哪个正方形,必胜方占据另一个正方形就赢了。

如果补集大小为奇数,先手下一步棋之后对方就满足必胜条件了。

补集大小 \(n\times m-2\times k^2\) 奇偶性即为 \(n\times m\) 奇偶性。

void solve(){
	int n,m,k;read(n,m,k);
	if((n&1)&&(m&1))puts("Yuto");
	else {
		if((n+2)/2<=k&&(m+2)/2<=k)puts("Yuto");	
		else puts("Platina");
	}
}
posted @ 2022-04-11 22:41  do_while_true  阅读(58)  评论(0编辑  收藏  举报