zoukankan      html  css  js  c++  java
  • P2197 nim游戏

    话说它是(简单?)博弈论的基础的说?

    这道模板还是很好打的,只要把所有数异或起来,ans如果为0就是必败局面,否则是必胜局面。

    知道这个结论就很好打出来了啦!!

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     int T;
     5     cin>>T;
     6     while(T--){
     7         int n,ans=0;
     8         cin>>n;
     9         for(int i=1,digit;i<=n;i++){
    10             cin>>digit;
    11             ans^=digit;
    12         }
    13         if(!ans) cout<<"No";
    14         else cout<<"Yes";
    15         cout<<endl;
    16     }
    17 }
    View Code

    但我知道这肯定不是关键?

    ヾ(o・ω・)ノ

    是——怎么证明的说!!!

    首先我们要了解nim的本质。

    Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 (我知道)Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。

    第二个问题随之而出:ICG -> 1.两人;.

                  2.交替移动;

                  3.任意操作与以前无强制关系(为了最有可能会改变)

                  4.最后无法移动为负。

     通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。

    目的是任何一方会在最开始出现必胜策略的时候遵循必胜策略。

    那么(๑>ڡ<)✿ 什么是必胜策略?

    定义:P-position(Previous)与N-position(Next)局面与无法进行任何移动的局面(也就是terminal position),遵循:

    1. 初始定义无法进行任何移动的局面为P(即最后一步),这样可以很好理解P是上一步操作的必胜局面。对于这一步的属于先手必败。(可向外拓展)
    2. 可以移动到P的局面是N局面,遵循这个原则就可以保证先手必胜。
    3. 所有只能导致N局面的局面是N局面,即指你走的这一步会导致下一操作者必胜。
    按照定义,每一个局面都是N/P局面的一种。 按照从后向前递推或者拓扑论思想感性理解。

    Nim游戏结论

    (Bouton's Theorem)对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算。

    (雾)完全没有道理的和异或运算扯上了关系。(基本上就是按照两种position的证明来的。)

    Nim游戏证明

    1. 这个判断将所有terminal position判为P-position;(废话) 全是0,异或——;
    2. 根据此判断,判为N-position的局面一定可以通过合法移动移动到某个P-position.即

       那么此时一定可以一步有

    正确性:

     

        3. 对于任意定义的P-position,一定不存在 一个合法移动移动到某个P-position。

    正确性:因为异或求和满足消去律,那么这不合法。

     

    证毕

    根据这个定理,我们可以在O(n)的时间内判断一个Nim的局面的性质,且如果它是N-position,也可以在O(n)的时间内找到所有的必胜策略。Nim问题就这样基本上完美的解决了。
     
  • 相关阅读:
    JAVA中添加jar包
    shell 脚本读取数据库示例
    Div 布局之 DIV垂直居中显示
    awk 学习笔记
    提示ufmyhr日志已满,无法继续操作软件,如何解决
    12种貌似卫生的不卫生习惯
    远程通客户端反复提示要下载客户端软件
    固定资产反启用后再启用报00:00:00错误
    2008年5月14日
    睡前六个必要动作,一觉睡到大天亮
  • 原文地址:https://www.cnblogs.com/btcadmire123A/p/11253066.html
Copyright © 2011-2022 走看看