2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)相关的知识,希望对你有一定的参考价值。

LINK

小范围手动模拟,发现不管怎样都可以平局,一时间不知道怎样必胜

考虑样例 n = 7 n=7 n=7的情况

先手现在中间放下一个 S S S

然后不管后手怎么走,先手都在另一侧的端点放一个 S S S(下面用 e e e表示空)

这样形成了S e e S S e e

或者S e e S e S e

或者S e e S e e S

这样一来我们有形如S e e S的状态,可以看出这是一个必败态,不管放在哪个位置放什么都输了

所以先手的任务只需要在S e e S之外的空位置填满且不输掉-----这是肯定可以做到的

所以 n = 7 n=7 n=7必胜

那么当 n = 8 n=8 n=8

由于奇偶性,虽然先手可以构造出S e e S的状态,但是最后是让自己遭殃

而后手根本构造不出S e e S的状态,因为构造这个状态必须满足有一个长度大于等于7的空闲区间

但是一开始先手在中间夹断后手就没机会了

所以当 n < = 6 n<=6 n<=6是平局

n > = 7 & & n < = 15 n>=7\\&\\&n<=15 n>=7&&n<=15

n n n为奇数

由于先手开局存在大于等于 7 7 7的区间,可以在这个区间的中心放 S S S

然后后手必定不会在这个长度为 7 7 7的区间下子(必败)

所以会在其余地方下,而因为 n − 7 n-7 n7是偶数,也就是刚好被先手下完

遭殃的是后手,先手必胜

n n n为偶数

显然由于奇偶性,先手不会构造S e e S(遭殃的是自己)

所以第一步会下 O O O分割棋盘,两侧都小于 7 7 7,后手也赢不了

平局

n > = 16 n>=16 n>=16

这时候有转机,因为先手的第一步分割开的两个部分都大于等于 7 7 7

后手此时也拥有主导权,此时决定胜负的就是奇偶

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
int n,casenum;
int main()
{
	int t; cin >> t;
	while( t-- )
	{
		cin >> n;
		cout << "Case #" << ++casenum << ": "; 
		if( n<=6 )	cout << "Draw\\n";
		else if( n&1 )	cout << "Panda\\n";
		else
		{
			if( n>=16 )	cout << "Sheep\\n";
			else	cout << "Draw\\n";
		}
	}
} 

以上是关于2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018 ACM-ICPC Asia Tsukuba Regional Contest

2017-2018 ACM-ICPC, Asia Daejeon Regional Contest

2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)

(好题)2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest F Pizza Delivery

2017-2018 ACM-ICPC Asia East Continent League Final J. Straight Master(差分+思维)

2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)