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;

    }

  • 相关阅读:
    用java在mysql中随机插入9000 000条数据
    java连接mysql的一个小例子
    JDK环境变量配置
    JVM工作原理
    线程和进程的区别
    java实现链表
    内连接、外连接、左连接、右连接
    udp协议
    要看的东西
    eclipse快捷键
  • 原文地址:https://www.cnblogs.com/philippica/p/4006938.html
Copyright © 2011-2022 走看看