zoukankan      html  css  js  c++  java
  • [poj2975]Nim_博弈论

    Nim poj-2975

    题目大意:给定n堆石子,问:多少堆石子满足操作之后先手必胜。

    注释:$1le nle 10^3$.


    想法

    我们设M=sg(x1)^sg(x2)^...^sg(xn)。其中,xi是第i堆石子个数。

    如果sg(xi)^M<sg(xi),显然这堆石子满足题意。

    最后,附上丑陋的代码... ...

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int n,a[1010],sum,ans;
    int main()
    {
    	while(~scanf("%d",&n)&&n)
    	{
    		ans=0;sum=0;
    		for(int i=1;i<=n;i++)
    		{
    			scanf("%d",&a[i]);
    			sum^=a[i];
    		}
    		for(int i=1;i<=n;i++) if((sum^a[i])<a[i]) ans++;
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

    小结:Nim游戏感觉是三大经典博弈中最灵活的。

  • 相关阅读:
    正则表达式
    文件读写
    列表和数组变量
    Perl基础
    [转] bias和variance
    Chapter 1
    Come back to CNblogs
    SentenceGeneration
    句子生成器
    ant相关操作
  • 原文地址:https://www.cnblogs.com/ShuraK/p/9614854.html
Copyright © 2011-2022 走看看