zoukankan      html  css  js  c++  java
  • HDU(1536)SNim (博弈)

    这道题是对SG函数的考查

    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include <string.h>
    #include <algorithm>
    #include <math.h>
    #include <vector>
    #include <map>
    #include <queue>
    #include <stack>
    #include <stdlib.h>
    using namespace std;
    const int maxn=10005;
    int sg[maxn];
    int s[maxn];
    int k,m;
    int mex(int v){
        if(sg[v]!=-1)return sg[v];
        bool vis[100+10];//千万不要定义全局变量,怎么找也找不到错。DFS次数比较多值会改变
        memset(vis,0,sizeof(vis));
        for(int i = 0;i < k;i++){
            if(v-s[i]>=0){
                int tmp=mex(v-s[i]);
                //sg[v-s[i]]=tmp ;
                vis[tmp]=1;
            }
        }
        for(int i=0;;i++){
            if(vis[i]==0){
                sg[v]=i;
                break;
            }
        }
        return sg[v];
    }
    int main(){
        int x ;
        while(scanf("%d",&k)&&k){
            for(int i = 0;i < k;i++)
                scanf("%d",s+i);
            sort(s,s+k);
            memset(sg,-1,sizeof(sg));
            sg[0]=0;
            scanf("%d",&m);
            while(m--){
                int l;
                scanf("%d",&l);
                int ans = 0;
                for(int i = 0;i < l;i++){
                    scanf("%d",&x);
                    if(sg[x]==-1)
                        sg[x]=mex(x) ;
                    ans ^= sg[x];
                }
                if(ans)
                    printf("W");
                else
                    printf("L");
            }
            printf("\n");
        }
        return 0;
    }
  • 相关阅读:
    listview 优化
    重要博客网址
    bottombar——Fragment
    视频播放,,今日头条样式
    databinding
    Picasso
    22222222
    202004leetcode刷题记录
    批量下载邮箱中指定日期范围的附件
    有雾环境下的目标检测
  • 原文地址:https://www.cnblogs.com/Roly/p/3083263.html
Copyright © 2011-2022 走看看