zoukankan      html  css  js  c++  java
  • POJ 1704 Georgia and Bob

    这是一道变种的NIM博弈。

    我们把两个相邻的棋子捆绑成一对。(如果有奇数个就添加一个0)
    那么,如果一个人挪动一对中的左边位置,另一个人就一定可以挪动相同的距离使得两个位置的距离不变。性质1

    如果我们把两个人之间的距离看作一堆石子的话,我们可以发现以下规律。

    • 如果若干堆石子数都为0,当然有石子数异或和一定为0. 同时这一定是必败态。(性质1
    • 每次可以取一堆石子中的若干个石子。那么如果一开始异或和不为0的话,通过一次操作就一定能给对方一个异或和为0的状态。——给对方一个必败态,就是自身必胜。

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=1010;
    int T,n,a[N];
    int main() {
    	scanf("%d",&T);
    	while(T--) {
    		scanf("%d",&n);
    		for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    		sort(a+1,a+n+1);
    		int ans=0;
    		for(int i=n;i>0;i-=2)ans^=a[i]-a[i-1]-1;
    		ans?puts("Georgia will win"):puts("Bob will win");
    	}
    	return 0;
    }
    
  • 相关阅读:
    canvas
    canvas -矩形
    canvas
    requestAnimationFrame
    flex in css
    让 .vue 支持 atom
    前端应该知道的基础知识汇总
    css伪类总结
    制作滑动门菜单
    页面布局中遇到菱形图片时的处理办法
  • 原文地址:https://www.cnblogs.com/zsyzlzy/p/12373885.html
Copyright © 2011-2022 走看看