HDU 6324 Grab The Tree 博弈 思维

/**
Problem F. Grab The Tree
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6324
题意:选走任意树上不相邻的点进行异或,将未选走的节点进行异或和 比较两者大大小 (> Q) (< T) (= D)
对于所有的节点进行异或得到sum  如果sum==0 那么必定是存在 a==b 这两部分的 由于 a^a=0,a^0=a;
如果说 sum>0  那么必定a和b是不相等的,不相等的话 我们取走最高位的那个1 ;
也就是最前面那个不相同的那个数的值当前这个数就是最大的; 罪域这种局面肯定值最大的;

*/

#include<bits/stdc++.h>
#define ll long long 
using namespace std; 


int main(){
      int  t;scanf("%d",&t);
      while(t--){
        ll n;scanf("%lld",&n);
        ll x=0,Max=0,kk=n;
        while(n--){
            ll tmp;scanf("%lld",&tmp);x^=tmp;
            Max=max(tmp,Max);
        }kk--;
        while(kk--){
            ll l,r;scanf("%lld %lld",&l,&r);
        }
        if(x==0) puts("D");
        else puts("Q");
      }
      return 0;
}

猜你喜欢

转载自blog.csdn.net/hypHuangYanPing/article/details/81812332