Luogu P2148 [SDOI2009]E&D (sg函数 博弈)

题目

洛谷传送门

题解

打表找 s g sg 规律。
严谨证明见:纳尔的博客

CODE

#include <bits/stdc++.h>
using namespace std;
int sg(int a, int b) {
    if(a&1 && b&1) return 0;
    return sg(a+1>>1, b+1>>1) + 1;
}
int main () {
    int T, n; scanf("%d", &T);
    while(T--) {
        scanf("%d", &n); n>>=1;
        int ans = 0;
        for(int i = 1, x, y; i <= n; ++i) {
            scanf("%d%d", &x, &y);
            ans ^= sg(x, y);
        }
        puts(ans ? "YES" : "NO");
    }
}
发布了367 篇原创文章 · 获赞 239 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Ike940067893/article/details/102817582