[HDU](6324)Grab The Tree ---- Nim博弈

版权声明:本文为博主原创文章,转载请预先通知博主(〃'▽'〃)。 https://blog.csdn.net/m0_37624640/article/details/81539529

题目链接

做法:很明显能发现这是Nim博弈的模型。由于异或和的特点,最终异或和一定能分成两个数异或,如果两个数异或为0,说明平局。否则一定是先手赢。复习复习博弈~

AC代码:

#include<bits/stdc++.h>
#define rep(i,s,t) for(int i = (int)(s); i <= (int)(t); i++)
#define rev(i,t,s) for(int i = (int)(t); i >= (int)(s); i--)
#define pb push_back
#define sz(x) (int)(x).size()
using namespace std;
typedef long long ll;
const int maxn = 1e5+5;
const int maxm = 1e9+7;
int main()
{
    #ifdef LOCAL_FILE
    freopen("in.txt","r",stdin);
    #endif // LOCAL_FILE
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,sum,u,v;
        sum = 0;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            int d;
            scanf("%d",&d);
            sum^=d;
        }
        for(int i=0;i<n-1;i++) scanf("%d %d",&u,&v);
        if(sum == 0) printf("D\n");
        else printf("Q\n");
    }
    return 0;
}

 

阅读更多

没有更多推荐了,返回首页