原题链接
考察:博弈论
又到了我最喜欢的死活推不出规律的环节(.
思路:
??对于n个石子堆,假定堆最大值为maxn,和为sum,如果maxn>sum-maxn那么先手必胜(先手一直取maxn堆即可).
??但是如果maxn<=sum-maxn,选手就需要避免出现操作后maxn>sum-maxn的情况,此时分两种情况:
?此时后手取一个非最大堆,仍然维持<=不变.所以此时胜负取决于sum的奇偶,同时也对应1.1
#include <iostream>
#include <cstring>
using namespace std;
int n;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
int sum= 0,maxn = 0;
for(int i=1;i<=n;i++)
{
int x; scanf("%d",&x);
sum+=x;
maxn = max(maxn,x);
}
if(maxn*2>sum||sum%2) puts("T");
else puts("HL");
}
return 0;
}
Stoned Game CodeForces - 1396B
原文:https://www.cnblogs.com/newblg/p/14861185.html