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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值