洛谷 P1288 取数游戏II 题解

题目:P1288 取数游戏II

博弈论 - 数论

我们可以把这个环想象成两条路,如果路的尽头没有边权为 0 0 的边,那么两条路径就是一样的。

对于一条路径,设 A l i c e Alice 为先手,那么她将她走过的路径边权变为 0 0 。轮到 B o b Bob 时,他最多也只能有一条路可以走。如果他选择不将该路边权变为 0 0 ,下一步 A l i c e Alice 一折返他就输了。如果他将边权变为 0 0 ,那么就变成重复以上操作了
最后如果路径长度为奇数, A l i c e Alice 还是赢;路径长为偶数的话 A l i c e Alice 就没有必胜策略

这样这题就被转化成判断两条路径奇偶性了

#include<cstdio>
#include<iostream>
using namespace std;
const int Maxn=30;
int a[Maxn],n;
int ans,tot; // 储存两条路长度
int main()
{
//	freopen("in.txt","r",stdin);
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	scanf("%d",a+i);
	
	int i=1;
	while(i<=n && a[i])++ans,++i;
	i=n;
	while(i>0 && a[i])++tot,--i;
	
	if((ans & 1) || (tot & 1))puts("YES");
	else puts("NO");
}
发布了75 篇原创文章 · 获赞 2 · 访问量 1814

猜你喜欢

转载自blog.csdn.net/Brian_Pan_/article/details/103860752