HDU 3389 阶梯博弈变形

Posted ( m Lweleth)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 3389 阶梯博弈变形相关的知识,希望对你有一定的参考价值。

n堆石子,每次选取两堆a!=b,(a+b)%2=1 && a!=b && 3|a+b,不能操作者输

选石子堆为奇数的等价于选取步数为奇数的,观察发现 1 3 4 是无法再移动的 步数为0,然后发现以6为周期,取模就好了

 

/** @Date    : 2017-10-14 19:18:00
  * @FileName: HDU 3389 基础阶梯博弈变形.cpp
  * @Platform: Windows
  * @Author  : Lweleth ([email protected])
  * @Link    : https://github.com/
  * @Version : $Id$
  */
#include <bits/stdc++.h>
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;

const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;


int main()
{
	int T;
	cin >> T;
	int cnt = 0;
	while(T--)
	{
		int n;
		scanf("%d", &n);
		int sg = 0;
		for(int i = 1; i <= n; i++)
		{
			int x;
			scanf("%d", &x);
			int c = i % 6;
			if(c == 0 || c == 2 || c == 5)
				sg ^= x;
		}
		if(sg)
			printf("Case %d: Alice\n", ++cnt);
		else printf("Case %d: Bob\n", ++cnt);
	}
    return 0;
}

以上是关于HDU 3389 阶梯博弈变形的主要内容,如果未能解决你的问题,请参考以下文章

HDU 4315 阶梯博弈变形

HDU 4315:Climbing the Hill(阶梯博弈)

HDU 5996:dingyeye loves stone(阶梯博弈)

HDU 1907 Nim博弈变形

HDU 2897 邂逅明下(巴什博弈变形)

HDU 2897 邂逅明下 ( bash 博弈变形