zoukankan      html  css  js  c++  java
  • HDU 3404 Switch lights(Nim积)题解

    题意:在一个二维平面中,有n个灯亮着并告诉你坐标,每回合需要找到一个矩形,这个矩形xy坐标最大的那个角落的点必须是亮着的灯,然后我们把四个角落的灯状态反转,不能操作为败

    思路:二维Nim积,看不懂啊,只能套模板了

    参考:HDU 3404 Switch lights (NIM 积)

    代码:

    #include<set>
    #include<map>
    #include<stack>
    #include<cmath>
    #include<queue>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    typedef long long ll;
    const int maxn = 1e6 + 10;
    const int seed = 131;
    const ll MOD = 1e9 + 7;
    const int INF = 0x3f3f3f3f;
    using namespace std;
    int m[2][2] = {0, 0, 0, 1};
    int Nim_Mul_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_Mul_Power(p, s);
        int d2 = Nim_Mul_Power(p, t);
        return (m * (d1 ^ d2)) ^ Nim_Mul_Power(m / 2, d1);
    }
    int Nim_Mul(int x, int y){
        if(x < y) return Nim_Mul(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_Mul(p, s), c2 = Nim_Mul(p, t) ^ Nim_Mul(q, s), c3 = Nim_Mul(q, t);
        return (m * (c1 ^ c2)) ^ c3 ^ Nim_Mul_Power(m / 2, c1);
    }
    int main(){
        int T;
        scanf("%d", &T);
        int ans;
        while(T--){
            ans = 0;
            int n, x, y;
            scanf("%d", &n);
            while(n--){
                scanf("%d%d", &x, &y);
                ans ^= Nim_Mul(x, y);
            }
            if(ans)
                printf("Have a try, lxhgww.
    ");
            else
                printf("Don't waste your time.
    ");
        }
        return 0;
    }
  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/KirinSB/p/9698822.html
Copyright © 2011-2022 走看看