いくつかの一般的なゲーム

いくつかの一般的なゲーム

最初:アメリカのゲーム

ゲームプレイ:N項目の合計の束は、m個の取り取るために、少なくとも一度、二巻きを抽出します。最後の勝利を削除してください。

アイデア:N <= M明確上ハンドが勝ちます。
完全なフリップ1を取ることができ、N = M +ので、この場合には平衡状態で、上側の手を取る方法を問わ。この状態に直面して誰が失われます。
既知のN%(M + 1)! = 0 Iの上部手が明らかにn個の%を除去することができる(M + 1)数が平衡相手となります。
したがって、法律が出てきた:
Nの%== 0勝、フリップ、または上ハンド勝(M + 1)。

質問ポータル:
HDU-Brave_Game

第二:Weizuoフーゲーム

商品の二つの山は、2つのテイクターンは、一つは、すべてのまで少なくとも一つの山から取ることができ、または勝つために最後の一人を取って、2つの山から同じ番号を取ります。

思考:i番目の負けは双方向述べ= I + aiを。
そして、i番目の前の負け状態AIは最小の自然数が表示されています。
シーケンスはビーティを証明することがあります。

数学記号は、絵とそれを再生することはできませんので、

質問ポータル:マッチゲーム

第三:ニームゲーム

いずれの商品、スタック数あたりの任意の数の項目をヒープに、双方が交代で、1が唯一最大のものは、すべてを取るアイテムを獲得する最後の男を奪う、山から最小を取ることができます。

スタックごとにブラケット(K1、K2、K3 ...... KNの数を示す )
束が状態、負け見られる(k)は、k = 0のとき
の状態を獲得するK> 0。
杭は:(K1、K2)K1 = K2 = 0の状態が失われている
0であることを特徴とする請求K1、K2、勝利のための他の非ゼロ状態。
K1はK2が非0である。(1,1)状態を失っ理解されます。
第一の保持状態によって失われる可能性が2(2)、(1,2)状態は、勝つために(1,1)に変換されます。
同様に知られている(2,2)負けた状態、(K、k)は、障害の状態に運命にあります。
長い上側の手を保持する前に行うのと同じ数の別の山が2つの山の後に同じままで、上側のハンドは、パイル側まで光場合、そのフリップフロッ勝利ので(K、0)の状態を取ります。
だから、(K、k)は、障害状態に運命にあります。
同じ2つのスタック場合(K1、K2、K3)の3つのグループが、
フリップが故障状態に運命にあるように上部手がので、この時点で、当選状態のため(K、K、K3)のスタックを取ることができます。
K3は= kはまた、状態を獲得します。
2:K1、K2、K3は同じではありません。誰が勝っ誰、状態に最初の状態を失うことを推測することができます。
-------------------------------------------------- -------------------------------------この時点では、XOR、関連の法律を推測することができます。
同一または異なって、二つの数0ため
とちょうど二つの同じ数の状態を失います。
3つの同一または異なっており、数自体は0ではないこと
、すべてのXORスタックアイテムの数を知っていて、
結果は0失う状態、フリップの勝利と比較した場合、。
それ以外の場合は、上部の手を獲得します。

質問ポータル:石ゲームを取ります

第四:パリティゲーム
ここに画像を挿入説明

まず証明:としては、長い石があるとして取ることができるようになります。
まず、石の唯一の山は確かに取ることができます。
そこに小石、石の2つの山があり、これはもはや石の山を取ることができたときの山の数は、0より大きいではないと仮定し、その後、A2 <= A1、A1 <0 、 A1 + A2 <0の導入、およびは、2の仮定と矛盾します石のヒープは確かに取ります。などなど。N個の石は取って喜んでであることを、長い石などとして、山積み。だから、答えは唯一の石の合計数のパリティに関連しています。ストーン奇数は確かに、上側の手を獲得します。抗手の勝利の後。コードをここに。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,ans=0,x;  
    cin>>n;
    while(n--)
        cin>>x,ans=(ans+x)%2;//对2取模奇数永远为1,偶数永远为0 防止爆int 
    puts(ans?"Alice":"Bob");
    return 0;
}

例2

私たちは、左上隅から行くためにこれだけのn ^ 2-1の正方形を始めているので、この質問は、ゲームのパリティです。以来、両側には、最適な戦略を取っています。だから、囲まれた別の人への人の可能性は低い場合は、マップ全体は確かに終えることが最後になりますので、(他の人は前に他の道を行くことを周りになります)。だから、誰が誰が勝つの最後のフレームにタイトルを取ることができます。グリッドは、それが奇数であるNと、N ^ 2-1ヶ月行かなければならないので^ 2-1は、抗受賞手の後、上部の手を獲得します。
すなわち、N ^ 2であっても抗受賞手の後、上部の手を獲得しています。
すなわち、n個であってもちょうどその抗受賞手、勝利を得ます。以下のコードで(*奇数=奇数奇数、偶数偶数* =偶数)。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    while(cin>>n&&n)
        puts(n&1?"Bob":"Alice");
    return 0;
}
公開された18元の記事 ウォン称賛14 ビュー364

おすすめ

転載: blog.csdn.net/weixin_45750972/article/details/104123875