码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-10-05 14:55:38      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   io   os   ar   sp   div   c   on   amp   

这题不科学~~本以为鬼谷子的钱袋是能在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;

}

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

标签:style   io   os   ar   sp   div   c   on   amp   

原文地址:http://www.cnblogs.com/philippica/p/4006938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!