https://codeforces.com/contest/1397/problem/D
思路:
对于某一堆石子很多,谁占据了就不会输。---必胜态
对于总和能分成相等的两堆,不论怎么样谁先取这堆就输。---必败态
那么剩下的就是最大值<总和的状态,可以通过剩下的总和的奇偶来观察到,奇偶可以决定谁先取剩下的相等的两堆的必败态。
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=200;
typedef long long LL;
inline LL read(){LL x=0,f=1;char ch=getchar(); while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL a[maxn];
int main(void){
cin.tie(0);std::ios::sync_with_stdio(false);
LL t;cin>>t;
while(t--){
LL n;cin>>n;
memset(a,0,sizeof(a));
for(LL i=1;i<=n;i++){
cin>>a[i];
}
if(n==1){
cout<<"T"<<"\n";
continue;
}
sort(a+1,a+1+n);
LL sum1=0;
for(LL i=1;i<=n-1;i++){
sum1+=a[i];
}
if(sum1<a[n]){
cout<<"T"<<"\n";
}
else{
sum1-=a[n];
if(sum1&1){
cout<<"T"<<"\n";
}
else{
cout<<"HL"<<"\n";
}
}
}
return 0;
}