zoukankan      html  css  js  c++  java
  • hdu 3032 Nim or not Nim?(搜索打SG表)

    题意:

      有n堆石子,alice先取,每次可以选择拿走一堆石子中的1~x(该堆石子总数) ,

    也可以选择将这堆石子分成任意的两堆。alice与bob轮流取,取走最后一个石子的人胜利。

    思路:

      因为数的范围比较大,所以最好通过SG打表的结果找出规律在解。

    打表代码

    #include<cstdio>
    #include<cstring>
    int sg[10000];
    int find(int x)
    {
        if(sg[x]>=0) return sg[x];
        bool mex[10000]= {0};
        for(int i=0; i<x; i++)
        {
            mex[find(i)]=1;//
            if(x-i>0&&i>0) mex[find(i)^find(x-i)]=1;
        }
        int i=0;
        while(mex[i]) i++;
        return sg[x]=i;
    }
    int main()
    {
        int n;
        memset(sg,-1,sizeof(sg));//sg[0]=0;
        //printf("%d#",sg[0]);
        find(100);
        for(int i=0; i<=100; i++) printf("%d %d
    ",i,sg[i]);
        return 0;
    }

    提交代码:

    #include<stdio.h>
    int x[4]={-1,0,0,1};
    int main()
    {
        int _case,n,m,ans;
        scanf("%d",&_case);
        while(_case--)
        {
            ans=0;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d",&m);
                ans^=m+x[m%4];
            }
            if(ans)printf("Alice
    ");
            else printf("Bob
    ");
        }
    }

  • 相关阅读:
    一周的前端面试
    PHP导出超大的CSV格式的Excel表方案
    Java HashMap Demo
    Vmware 设置桥接模式
    Vue 模板
    SpringMVC 拦截器
    IntelliJ IDEA 修改缓存文件设置
    Maven 命令操作项目
    Maven 介绍
    Spring Boot 5 SpringSecurity身份验证
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3349278.html
Copyright © 2011-2022 走看看