zoukankan      html  css  js  c++  java
  • POJ 3553 Light Switching Game 博弈论 nim积 sg函数

    http://poj.org/problem?id=3533

    变成三维的nim积。。前面hdu那个算二维nim积的题的函数都不用改,多nim积一次就过了。。。longlong似乎不必要但是还是加上了

    代码

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<map>
     7 #include<ctime>
     8 using namespace std;
     9 long long n;
    10 long long sg[21][21]={};
    11 long long f(long long,long long);
    12 long long g(long long x,long long y){
    13     if(sg[x][y]!=-1)return sg[x][y];
    14     if(!x)return sg[x][y]=1<<y;
    15     if(!y)return sg[x][y]=1<<x;
    16     long long ans=1,k=1,t;
    17     long long x1=x,y1=y;
    18     while(x||y){
    19         t=1<<k;
    20         if((x^y)&1){
    21             ans*=t;
    22         }
    23         x>>=1;y>>=1;k<<=1;
    24     }
    25     k=1;x=x1;y=y1;
    26     while(x||y){
    27         t=1<<k;
    28         if((x&y)&1){
    29             ans=f(ans,t/2*3);
    30         }
    31         x>>=1;y>>=1;k<<=1;
    32     }return sg[x1][y1]=ans;
    33 }
    34 long long f(long long x,long long y){
    35     if(!x||!y)return 0;
    36     if(x==1)return y;
    37     if(y==1)return x;
    38     long long ans=0;
    39     for(long long i=x,a=0;i;i>>=1,a++){
    40         if(!(i&1))continue;
    41         for(long long j=y,b=0;j;j>>=1,b++){
    42             if(!(j&1))continue;
    43             ans^=g(a,b);
    44         }
    45     }return ans;
    46 }
    47 int main(){
    48     memset(sg,-1,sizeof(sg));
    49     while(~scanf("%lld",&n)){
    50         long long ans=0,x,y,z;
    51         for(long long i=1;i<=n;i++){
    52             scanf("%lld%lld%lld",&x,&y,&z);
    53             ans^=f(z,f(x,y));
    54         }
    55         if(ans)printf("No
    ");
    56         else printf("Yes
    ");
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    struts-OGNL
    Linux开发环境配置大全
    Mybartis逆向工程
    开发环境配置大全
    金三银四,你的专属复习宝典
    Java5~11新特性
    Struts2+Spring+Hibernate整合开发(Maven多模块搭建)
    三层架构,Struts2,SpringMVC实现原理图
    Springmvc+Spring+Mybatis整合开发(架构搭建)
    MyBatis面试题整理
  • 原文地址:https://www.cnblogs.com/137shoebills/p/8340884.html
Copyright © 2011-2022 走看看