博弈模拟题
最优策略就是每次都拿最大堆,用优先队列直接模拟即可
代码:
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue>
#include <vector>
#include <map>
using namespace std;
typedef long long ll;
typedef double db;
const int mod=1e9+7;
const int maxn=1e6;
const double eps=0.00000001;
int a[105];
int main(){
int t,n;
cin>>t;
while(t--){
scanf("%d",&n);
priority_queue<int>que;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
que.push(a[i]);
}
bool f;
while(1){
if(que.empty()){
f=false;
break;
}
int x1=que.top();
que.pop();
if(que.empty()){
f=true;
break;
}
int x2=que.top();
que.pop();
x1--,x2--;
if(x1>0) que.push(x1);
if(x2>0) que.push(x2);
}
if(f) puts("T");
else puts("HL");
}
}