zoukankan      html  css  js  c++  java
  • POJ

    阶梯博弈:

    阶梯博弈:博弈在阶梯上进行,每次可以将一堆的若干式子移动到上一阶去,不可操作者输。

    忽略所有的偶数阶梯,只留下奇数阶梯,转化为普通的NimNim游戏。大致的思路是这样的:首先终止状态一定是所有石子都在00号阶梯,即一个偶数阶梯。那么如果对方移动了一个偶数阶梯上的石子,那么你可以在移动结束的那个奇数阶梯,直接把等数量的石子继续向前移动,这样子可以保证偶数阶梯上的石子对于结果没有任何影响。那么如果移动的是一个奇数阶梯,因为偶数阶梯是没有影响的,所以你可以认为移动奇数阶梯就是直接被移走了,那么这就是一个普通的NimNim游戏了。

    把每两个相邻棋子之间的距离当作是石子 则变为阶梯博弈。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #include<set>
    #include<vector>
    
    //睿智OJ头文件
    using namespace std;
    int a[1005];
    bool cmp(int a, int b)
    {
        return a > b;
    }
    int main()
    {
        int T;
        cin >> T;
        while (T--) {
            int n;
            cin >> n;
            int now = 0;
            for (int i = 1; i <= n; i++) {
                cin >> a[i];
            }
            sort(a + 1, a + 1 + n, cmp);
            a[n + 1] = 0;
            for (int i = 1; i <= n; i += 2) {
                now ^= a[i] - a[i + 1] - 1;
            }
            puts(!now ? "Bob will win" : "Georgia will win");
        }
        return 0;
    }
  • 相关阅读:
    解决360浏览器兼容模式的页面显示问题
    .NET知识点汇总
    C# 6.0新加特性
    C# 5.0新加特性
    C# 4.0新加特性
    C# 3.0新加特性
    C# 2.0新加特性
    C#中null、""、string.empty区别
    C#使用SQLite
    页面 关于处理如何点击按钮实现定位到某一位置操作
  • 原文地址:https://www.cnblogs.com/Aragaki/p/11502591.html
Copyright © 2011-2022 走看看