AmazingCounters.com

BZOJ 2463: [中山市选2009]谁能赢呢?【博弈】

这题不科学~~本以为鬼谷子的钱袋是能在BZOJ写的最短的程序了,这题还要短…..好吧,思考难度神马的还是有点的(至少对我这种蒟蒻来说)。很明显这是道博弈论的题目,在纸上画出了n=1~4的博弈树,发现bob和alice是交替出现的…0.0 当时就在想不会这么巧吧。忍不住百度了下解题,果然是这样的,不过解题上说结论归纳可得。。。。弱弱的写一个自己的理解。设小明和小红交替下棋为一个周期,则根据规则一个周期内小红和小明下的棋的形状将是一个1*2的长方形,很容易得出n*n的棋盘当且仅当n为偶数时能被1*2的长方形完全覆盖,当n为奇数时,仅有一块不能被覆盖,于是类似于NIM游戏的构造法,很容易想到当对方走一步后,我总能走到1*2的长方形的另一端,因此当n为偶数时无论如何都是先手必胜,同理当n为奇数时,由于剩下一块不能被长方形覆盖,因此后手必胜

#include<iostream>

#include<cstdio>

#include <math.h>

#include <string.h>

using namespace std;

int main()

{

   int n;

   scanf("%d",&n);

   while (n!=0)

    {

         if ((n & 1) ==0)printf("Alice\n");elseprintf("Bob\n");

         scanf("%d",&n);

    }

   return 0;

}

posted @ 2014-10-05 13:25  philippica  阅读(166)  评论(0编辑  收藏  举报