[THUPC 2024 初赛] 三步棋-题解

· · 题解

很有意思的一道题,使我的手旋转赛时手玩出结论,为了弥补吃的两发罚时造福后人,写的详细一点

题目大意是多组询问,每次给你一个 5\times5 的方格和一个不超过 4 个棋子的连通图案,两个人轮流,每次各放一个棋子,直到一方拼出给定图案。若此时棋盘上棋子个数是 3 的倍数,其获胜;反之另一方获胜。求先手是否必胜。

情况不多,选择分类讨论。(事实上 ICPC 赛制可以把所有情况都试一遍)

t= 给定图案的棋子个数。

经过上面的分类讨论,最终只需要依次判断并输出结果就可以了。

Code:

#include<bits/stdc++.h>
using namespace std;
int T;
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        char c;int cnt=0;
        int mnx=6,mny=6,mxx=0,mxy=0;
        for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++)
            {
                cin>>c;
                if(c=='o')
                {
                    cnt++;
                    mnx=min(mnx,i);mny=min(mny,j);
                    mxx=max(mxx,i);mxy=max(mxy,j);
                }
            }
        printf(cnt==2||(cnt==4&&(mxx-mnx>=2||mxy-mny>=2)&&(mxx-mnx<3&&mxy-mny<3))?"Far\n":"Away\n");
    }
    return 0;
}