zoukankan      html  css  js  c++  java
  • 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 ");elseprintf("Bob ");

             scanf("%d",&n);

        }

       return 0;

    }

  • 相关阅读:
    Linux的JVM可以从SUN网站上下载
    实践是最好的老师
    SCAU 8624 多项式系数累加和
    SCAU 8617 阶乘数字和 (水题)
    SCAU 8614 素数
    SCAU 8619 公约公倍
    HDU ACM 1106 排序
    Uva 465 Overflow
    SCAU 8611 大牛之路I
    SCAU 9501 ACMer不得不知道的事儿
  • 原文地址:https://www.cnblogs.com/philippica/p/4006938.html
Copyright © 2011-2022 走看看