首页 > 其他 > 详细

poj 2425 A Chess Game (DAG上博弈)

时间:2020-08-14 02:10:21      阅读:62      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=2425(记录模板)

思路:dfs找对应起始位置的sg函数,看异或和是不是0。(具体看代码)

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<vector>
#include<stack>
#include<deque>
#include<cmath>
#include<map>
#include<queue>
#include<bitset>
//#include<hash_map>
#define sd(x) scanf("%d",&x)
#define lsd(x) scanf("%lld",&x)
#define ms(x,y) memset(x,y,sizeof x)
#define fu(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
#define all(a) a.begin(),a.end()
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
//using namespace __gnu_cxx;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int maxn=1e3+79;
const int mod=998244353;
const ll INF=0x7f7f7f7f;
const double pi=acos(-1);
int n,sg[maxn];
vector<int> to[maxn];
int dfs(int x)
{
    if(sg[x]!=-1) return sg[x];
    //这里vis一定要开局部,不然wa
    //因为每一层递归都要用不同的vis标记(虽然名字相同却是不同数组),放在全局相当于所有循环共用一个vis
    bool vis[maxn];ms(vis,0);
    if(!to[x].empty())
    fu(i,0,to[x].size()-1)
    {
        //搜索他能到的点
        int nxt=to[x][i];
        dfs(nxt);
        vis[sg[nxt]]=1;
    }
    int i=0;
    while(vis[i]) i++;//找mex(sg[x]);
    return sg[x]=i;
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    while(~sd(n))
    {
        fu(i,0,n) to[i].clear();
        ms(sg,-1);
        fu(i,0,n-1)
        {
            int x,y;
            sd(x);
            fu(j,1,x) 
            {
                sd(y);
                to[i].push_back(y);
            }
        }
        int q;
        while(~sd(q))
        {
            if(q==0) break;
            int ans=0;
            fu(i,1,q)
            {
                int pos;sd(pos);
                ans^=dfs(pos);
            }
            if(ans) printf("WIN\n");
            else printf("LOSE\n");
        }
    }
    return 0;
}

 

poj 2425 A Chess Game (DAG上博弈)

原文:https://www.cnblogs.com/studyshare777/p/13498965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!