哎,这题死活想不出来…
只能加几分了,哎
Ⅰ.考虑极端情况
考虑特殊情况,当某一堆石子x超级多的时候
先手肯定一直拿这堆石子,那后手只能拿其他石子
如果x大于其他石子和,那么后手没石子拿了,先手仍然拿这堆,先手赢
那一般情况怎么办呢?
假设石子总数是sumn个
可以想到,最后分出胜负是因为只剩最后一堆石子,设剩下x个
谁先拿x这堆谁就赢了
问题在于x是多少,如果知道x就知道(sumn−x)的奇偶性
这样就能知道谁最后拿了x
假设x=5,那么总石子数被取到9的时候
接下来拿的人可以一直拿x这堆,就赢了,原因同Ⅰ
所以另一个人一定不会让这种事发生,在之前的决策就会不让这堆石子那么突出
假设x=4,那么总石子数被取到7的时候,接下来取得人就必胜了
所以另一个人在之前的决策就不会让这堆石子这么突出
同理x只能等于1
也就是最后一定会拿得只剩下1颗石子啊!!
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
int t,n,a[maxn],b[maxn];
signed main()
{
cin >> t;
while( t-- )
{
cin >> n;
int maxx=0,sumn=0;
for(int i=1;i<=n;i++)
{
cin >> a[i];
sumn+=a[i];
maxx=max(maxx,a[i]);
}
if( maxx>(sumn-maxx) ) cout << "T\n";
else
{
if( sumn%2==1 ) cout << "T\n";
else cout << "HL\n";
}
}
}