传送门
博弈论小题,练练手。
题面:(n)堆石子,两人轮流取,每次取一个,但不能取对手上次取过的那一堆,问在两人都采用最优策略时,先手必胜还是先手必败。
令(sum a_i=S),分两种情况讨论:
-
如果(exist a_i > lfloorfrac{S}{2} floor),那么先手必胜。因为先手可以一直取这一堆石子,而后手就一直不能取这一堆石子。那么当后手把其他石子都取完了后,(a_i)这堆石子还剩,因此先手必胜。
-
(forall a_i leqslant lfloor frac{S}{2} floor),那么当(S)为偶数的时候,先手必败,否则先手必胜。先考虑(n)为偶数的情况:我们可以做一个完美匹配:将所有石子按每一堆依次标号,那么标号为(x)和(x + lfloor frac{S}{2} floor)的两颗石子必然不在一堆里,因此先手取(x),后手就可以取(x + lfloor frac{S}{2} floor),直到后手把最后一棵石子取完。而对于(S)是奇数的情况,先手任取一颗石子,就变成了(S)是偶数的情况,因此先手必胜。
{
int T = read();
while(T--)
{
int n = read();
int sum = 0, Max = 0;
for(int i = 1; i <= n; ++i)
{
int x = read();
sum += x, Max = max(Max, x);
}
puts((Max > sum / 2 || (sum & 1)) ? "T" : "HL");
}
return 0;
}