【HDOJ6324】Grab The Tree(博弈)
阅读原文时间:2023年07月09日阅读:1

题意:

思路:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define left (now<<1) #define right ((now<<1)+1) #define mid ((l+r)>>1)
using namespace std;
typedef long long int lint;

const int MAXN = 1e5 + ;

int t,n,m;
int p[];

void chai(int num){
for(int i = ; i <= ; ++i){ int k = num & ; num = num >> ;
if(k == ){ p[i]++;}
}
}

int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n); memset(p,,sizeof(p));
for(int i = ; i <= n; ++i){ int num; scanf("%d",&num); chai(num); } for(int i = ; i < n; ++i){ int u,v; scanf("%d%d",&u,&v); } int can = -;; for(int i = ; i >= ; --i){
if(p[i] % == ){
can = ; break;
}
}
// for(int i = 0; i <= 4; ++i){
// printf("%d ",p[i]);
// }
if(can == -){
printf("D\n");
}else{
printf("Q\n");
}
}
return ;
}