POJ2484 A Funny Game

题目地址

题解

当$n=1$或者$n=2$时,明显先手必胜。
当$n=3$时,明显先手必败。
由于每次只可取$1$或$2$个,而取$2$个时,$2$个必须相邻,
推断有:
当$n>3$时,
若$n$为偶数,先手无论如何取,后手可在先手对称的位置上取同等数量,
于是先手必败。
若$n$为奇数,先手取$1$个时,后手可在先手对称的位置上取$2$个,
之后无论先手如何取,后手都可在先手对称的位置上取同等数量,先手必败。
如果先手一开始取$2$个时,后手可在先手对称的位置上取$1$个,之后还剩下偶数个,
可如上推出先手必败。故当$n>3$时,先手必败
(来自链接)

这种模仿对手以判断是否是必胜的思想方式很有效,学到了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <cctype>
using namespace std;
typedef long long ll;
int main(){
int n;
for(;;){
scanf("%d",&n);
if(!n)break;
printf("%s\n",(n<=2)?"Alice":"Bob");
}
return 0;
}