zoukankan      html  css  js  c++  java
  • hdu 3404 Switch lights 博弈论

    主要是求NIM积!!!

    代码如下:

    #include<iostream>
    #include<cstdio>
    #include<stack>
    #include<cstring>
    #define ll __int64
    using namespace std;
    int f[20][20];
    int nim(int x,int y);
    int _nim(int x,int y){
        if(!x||!y)return 1<<x+y;
        int &F=f[x][y];
        if(F!=-1)return F;
        int ret=1,e=1;
        for(int i=0;i<16;++i)
            if(((x^y)>>i)&1)e*=1<<(1<<i);
        else if((x>>i)&1)ret=nim(ret,3*(1<<(1<<i))/2);
        return F=nim(ret,e);
    }
    int nim(int x,int y){
        if(x<2||y<2)return x*y;
        int ret=0;
        for(int i=0;i<16;++i)
            if((x>>i)&1)
            for(int j=0;j<16;++j)
            if((y>>j)&1)
            ret^=_nim(i,j);
        return ret;
    }
    int main()
    {
        int t,x,y,n,res;
        memset(f,-1,sizeof(f));
        scanf("%d",&t);
        while(t--){
            scanf("%d",&n);
            res=0;
            while(n--){
                scanf("%d%d",&x,&y);
                res^=nim(x,y);
            }
            if(res) puts("Have a try, lxhgww.");
            else puts("Don't waste your time.");
        }
        return 0;
    }
    View Code

  • 相关阅读:
    arrayPointer
    shellAPP
    docker
    程序运行时内存管理
    C++ deepin
    coreOS+Docker新一代企业轻量级Linux
    玩转docker
    古典小说丛书系列软件
    读《追随智慧》(一)
    高速基于echarts的大数据可视化
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3298737.html
Copyright © 2011-2022 走看看