zoukankan      html  css  js  c++  java
  • poj1704 Georgia and Bob

    又是个我好像没学过的博弈。。。

    阶梯博弈是这样的:游戏开始时有许多硬币任意分布在楼梯上,从地面由下向上编号为0到n。 游戏者在每次操作时可以将楼梯j(1≤j≤n)上的任意多但至少一个硬币移动到楼梯j-1上。 游戏者轮流操作,将最后一枚硬币移至地上的人获胜。

    这道题就把两个棋子之间的空间看作一个阶梯上的硬币,这个阶梯是左高右低的,向左移动棋子相当于空格向右,把硬币向下送

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    int a[11000];
    int len,s[11000];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n;
            scanf("%d",&n);
            for(int i=1;i<=n;i++)scanf("%d",&a[i]);
            sort(a+1,a+n+1);
            
            len=0;a[0]=0;
            for(int i=n;i>=1;i--)s[++len]=a[i]-a[i-1]-1;
            
            int ans=0;
            for(int i=1;i<=len;i++)
                if(i%2==1)ans^=s[i];
                
            if(ans==0)printf("Bob will win
    ");
            else printf("Georgia will win
    ");
        }
        return 0;
    }
  • 相关阅读:
    MVC3 验证码
    说说.NET反编译工具
    HTTP协议学习
    Spring Web Flow 的优缺点
    Java CLASSPATH 引发的问题
    MySQL 高级
    Java Policy
    AJAX
    数据结构与算法学习资源
    C#学习资源
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/9414934.html
Copyright © 2011-2022 走看看