首页 > 其他 > 详细

Stoned Game CodeForces - 1396B

时间:2021-06-08 09:51:58      阅读:24      评论:0      收藏:0      [点我收藏+]

原题链接
考察:博弈论
又到了我最喜欢的死活推不出规律的环节(.
思路:
??对于n个石子堆,假定堆最大值为maxn,和为sum,如果maxn>sum-maxn那么先手必胜(先手一直取maxn堆即可).
??但是如果maxn<=sum-maxn,选手就需要避免出现操作后maxn>sum-maxn的情况,此时分两种情况:

  1. maxn堆可取,此时取maxn,此时两种情况:
    1.1 maxn不变,那么此时一定只有两堆,后手必胜.
    1.2 maxn-1,此时参考下面不等式,仍维持不等式<=
  2. maxn不可取,那么上一个人最优解一定取maxn,此时不等式变为:

\[2*(maxn-1)<=sum-1 \]

\[2*maxn<=sum+1 \]

\[maxn<=sum+1-maxn \]

?此时后手取一个非最大堆,仍然维持<=不变.所以此时胜负取决于sum的奇偶,同时也对应1.1

Code

#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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!