zoukankan      html  css  js  c++  java
  • 【BZOJ2463】谁能赢呢?(博弈论)

    【BZOJ2463】谁能赢呢?(博弈论)

    题面

    BZOJ
    洛谷

    题解

    洛谷上对于难度的评级我总觉有些问题。
    很多人按照代码难度而并非思维难度在评级,导致很多评级很不合理啊。。。

    不说废话了。。

    对于一个(n*n)的棋盘,我们可以考虑用(1 imes 2)的骨牌来进行覆盖。
    显然对于(n)为奇数不能覆盖满,(n)为偶数能够覆盖满。
    那么对于偶数局面,我们出发点一定是一个骨牌的一端,那么无论先手只需要移动到骨牌的另外一端去就好了,对于后手而言,因为不能回头,所以必定会走到一个新的骨牌上,而先手一定可以移动到骨牌的另外一端,那么一定是后手先无路可走。
    同理对于奇数局面,我们可以认为出发点不被骨牌覆盖,那么无论先手走到了哪个骨牌的一端,后手只需要按照上述策略走就没有任何问题了。

    总的来说其实本质上是一个二分图博弈。

    #include<cstdio>
    inline int read()
    {
    	int x=0;bool t=false;char ch=getchar();
    	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    	if(ch=='-')t=true,ch=getchar();
    	while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    	return t?-x:x;
    }
    int main()
    {
    	while(int n=read())puts((n&1)?"Bob":"Alice");
    	return 0;
    }
    
    
  • 相关阅读:
    打印水仙花数
    打印从1到k之间的所有素数
    Fibonacci数列小程序
    Fibonacci数
    水仙花数
    猴子吃桃问题
    5个数求最值—南阳acm
    三个数从小到大排序—南阳acm
    南阳acm奇偶数分离
    find the safest road--hdu1596
  • 原文地址:https://www.cnblogs.com/cjyyb/p/9552090.html
Copyright © 2011-2022 走看看