zoukankan      html  css  js  c++  java
  • 洛谷2575高手过招

    题目:https://www.luogu.org/problemnew/show/P2575

    略微理解一下题意。

    稍稍状压的SG模板。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int T,n,sg[(1<<20)+5],xnt;
    void dfs(int cur)
    {
        if(sg[cur]!=-1)return;
        int sum=0;
        for(int i=1;i<20;i++)
            if((1<<i)&cur)
            {
                if(((1<<(i-1))&cur)==0)
                {
                    int k=cur-(1<<i)+(1<<(i-1));
                    dfs(k);sum|=(1<<sg[k]);
                }
                else {
                    for(int j=i-1;j>=0;j--)
                        if(((1<<j)&cur)==0)
                        {
                            int k=cur-(1<<i)+(1<<j);
                            dfs(k);sum|=(1<<sg[k]);
                            break;
                        }
                }
            }
        for(int i=0;i<20;i++)
            if(!((1<<i)&sum))
            {
                sg[cur]=i;return;
            }
    }
    void init()
    {
        memset(sg,-1,sizeof sg);
        for(int i=0;i<20;i++)
            sg[(1<<i)-1]=0;
    }
    int main()
    {
        init();
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);int m,sum=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&m);int nw=0,k;
                for(int j=1;j<=m;j++)
                {
                    scanf("%d",&k);k=20-k+1;
                    nw|=(1<<(k-1));
                }
                dfs(nw);
                sum^=sg[nw];
            }
            if(sum)printf("YES
    ");
            else printf("NO
    ");
        }
        return 0;
    }
  • 相关阅读:
    类属性、实例属性
    多态
    重载
    多继承
    继承介绍以及单继承
    析构
    构造
    self
    方法
    属性
  • 原文地址:https://www.cnblogs.com/Narh/p/9085757.html
Copyright © 2011-2022 走看看