题意
T与HT玩游戏,每方选非空堆石头中的一个拿出,且不能选择上一轮对方选择的石头堆,有一方无法选择石头堆时则失败。由T先开始选择
分析
分两种情况讨论
(1)当最大堆的石子数大于其他所有堆的石子数之和时,明显先手获胜(特殊情况)
(2)当所有堆的石子之和为偶数时后手获胜(后手只需要一直消耗石子数最多的那一堆,最终必然能使局面变为两堆石子数各为1的局面),否则为先手获胜
#include<bits/stdc++.h>
using namespace std;
int a[105];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,ans=0,mx=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i],ans+=a[i],mx=max(mx,a[i]);
if(mx>ans-mx)
cout<<"T\n";
else
{
if(ans%2==0)
cout<<"HL\n";
else
cout<<"T\n";
}
}
return 0;
}
本文分析了一种两人轮流从堆中取石头的游戏策略,通过判断最大堆石子数与其他堆石子数的关系及总石子数的奇偶性,确定了先手与后手的胜败条件。
363

被折叠的 条评论
为什么被折叠?



