• hdu3032sg打表找规律


    先打个表冷静一下

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-9;
    const int N=1000+10,maxn=111117,inf=11111;
    
    int f[N],sg[N],Hash[N];//f是可以取走的石子书
    void getsg(int n)
    {
        memset(Hash,0,sizeof Hash);
        for(int i=0;i<n;i++)
            Hash[sg[i]]=1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(i+j==n)
                   Hash[sg[i]^sg[j]]=1;
        for(int i=0;;i++)
            if(!Hash[i])
            {
                sg[n]=i;
                break;
            }
        cout<<n<<" "<<sg[n]<<endl;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        for(int i=1;i<=100;i++)
            getsg(i);
        return 0;
    }
    View Code

    可以看出sg【i】=i;i%4==1||2

    sg[i]=i+1,i%4==3

    sg[i]=i-1,i%4==4

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-9;
    const int N=1000+10,maxn=111117,inf=11111;
    
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int t,n,a;
        cin>>t;
        while(t--){
            cin>>n;
            int ans;
            for(int i=0;i<n;i++)
            {
                cin>>a;
                if(a%4==3)a++;
                else if(a%4==0)a--;
                if(i==0)ans=a;
                else ans=ans^a;
            }
            if(!ans)cout<<"Bob"<<endl;
            else cout<<"Alice"<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Linux安装配置tomcat
    linux 安装jdk
    让/etc/profile文件修改后立即生效
    group by 和聚合函数
    mysql插入日期 vs oracle插入日期
    Thinkphp学习笔记-删除缓存
    Thinkphp错误-phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连
    Thinkphp学习笔记-模板赋值
    Thinkphp学习笔记-模板主题
    Windows-设置系统服务不开机启动
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/7040878.html
Copyright © 2020-2023  润新知