• HDU 3404 Switch lights(NIM积)


    题目链接

    题意:一个n*m的格子里全是灯。每次选出一个矩形,改变四个角灯的状态,而且右下角的灯初始必须是开的。

    思路:Nim积模板题。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define N 2000000
    using namespace std;
    int m[2][2]={0,0,0,1};
    int Nim_Mult_Power(int x,int y){
        if(x<2)
            return m[x][y];
        int a=0;
        for(;;a++)
            if(x>=(1<<(1<<a))&&x<(1<<(1<<(a+1))))
                break;
        int m=1<<(1<<a);
        int p=x/m,s=y/m,t=y%m;
        int d1=Nim_Mult_Power(p,s);
        int d2=Nim_Mult_Power(p,t);
        return (m*(d1^d2))^Nim_Mult_Power(m/2,d1);
    }
    int Nim_Mult(int x,int y){
        if(x<y)
            return Nim_Mult(y,x);
        if(x<2)
            return m[x][y];
        int a=0;
        for(;;a++)
            if(x>=(1<<(1<<a))&&x<(1<<(1<<(a+1))))
                break;
        int m=1<<(1<<a);
        int p=x/m,q=x%m,s=y/m,t=y%m;
        int c1=Nim_Mult(p,s),c2=Nim_Mult(p,t)^Nim_Mult(q,s),c3=Nim_Mult(q,t);
        return (m*(c1^c2))^c3^Nim_Mult_Power(m/2,c1);
    }
    int main(){
        int t,n,x,y;
        scanf("%d",&t);
        while(t--){
            scanf("%d",&n);
            int ret=0;
            while(n--){
                scanf("%d%d",&x,&y);
                ret^=Nim_Mult(x,y);
            }
            if(ret)
                puts("Have a try, lxhgww.");
            else
                puts("Don't waste your time.");
        }
        return 0;
    }
  • 相关阅读:
    EventBus
    Date 时间 日期 常用方法函数
    线程 Thread Handler
    MySQL-DoubleWrite
    MySQL各版本优化器变化
    MySQL优化器-条件过滤(condition_fanout_filter)
    PXC集群搭建
    mysql主从不一致--relay_log_recovery设置成0
    MySQL5.7-sql_mode
    根据ibd文件进行数据恢复或导入
  • 原文地址:https://www.cnblogs.com/2462478392Lee/p/13780323.html
Copyright © 2020-2023  润新知