邂逅明下 HDU - 2897

原题链接
考察:博弈论
思路:
  sg函数打表找规律,发现n%(p+q)后,若1<=n<=p则必败.
想说一下的就是,sg函数的必败点不能定义为>0的数.这样会让某些必胜点sg(x)>0被判断必败.

Code

#include <iostream>
#include <cstring> 
#include <set>
using namespace std;
const int N = 65539;
int n,p,q;
//int sg(int x)
//{
//	if(f[x]!=-1) return f[x];
//	set<int> s;
//	if(x<p) s.insert(sg(0));
//	for(int i=p;i<=x&&i<=q;i++)
//	  s.insert(sg(x-i));
//	for(int i=0;;i++)
//	  if(!s.count(i)) return f[x] = i;
//}
int main()
{
	while(scanf("%d%d%d",&n,&p,&q)!=EOF)
	{
//		memset(f,-1,sizeof f);
//		for(int i=1;i<=p;i++) f[i] = 0;
//		f[0] = 1;
//		if(!sg(n)) puts("LOST");
//		else puts("WIN");
        n%=(p+q);
        if(n>=1&&n<=p) puts("LOST");
        else puts("WIN");
	}
	return 0;
}
posted @ 2021-05-24 11:11  acmloser  阅读(28)  评论(0编辑  收藏  举报