博弈SG函式

2021-07-15 10:00:55 字數 666 閱讀 2270

題意: 

乙個棋盤有n行,每行20格仔,都有一些棋子,兩個人輪流進行這個操作:選擇某一行乙個棋子移動到該行右邊第乙個空的格仔。不能進行的人輸。問先手是否能贏。

分析: 

sg函式的應用,當時自己做的時候沒做出來qaq。終結點是這一行沒有棋子可以走,即0,然後逆推出其他結點的sg函式。每一行的狀態看成是乙個結點,然後把狀態二進位制壓縮,1表示有棋子,0表示空格。

#include#include#include#include#include//#includeusing namespace std;

#define min(a,b) (a < b ? a:b)

#define max(a,b) (a > b ? a:b)

#define ll long long int

int sg[1 << 20], vis[21];

int setsg(int x)}}

}for(int i = 0; i <= 20; ++i)

}}int main()

scanf("%d", &t);

while(t--)

ans ^= sg[t];

}if(ans == 0)

else

}//system("pause");

}

博弈sg函式

sg函式 個人認為還是用於三種方法都無法解決的情況,如按特殊數字取石子 我們把整個博弈過程抽象為有向無環圖 1.幾項準備工作 mex求最小非負整數mex 0,mex 3,mex 0 sg x mex 就是石頭變少的繼 這樣sg就滿足幾個性質 1.sg x 0時,它的後繼都不為零 2.sg x 0時,...

SG函式博弈函式

必勝點和必敗點的概念 p點 必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。n點 必勝點,處於此情況下,雙方操作均正確的情況下必勝。必勝點和必敗點的性質 1 所有終結點是 必敗點 p 我們以此為基本前提進行推理,換句話說,我們以此為假設 2 從任何必勝點n 操作,至少有一種方式可以...

博弈 SG函式和SG定理

在介紹sg函式和sg定理之前我們先介紹介紹必勝點與必敗點吧.必勝點和必敗點的概念 p點 必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。n點 必勝點,處於此情況下,雙方操作均正確的情況下必勝。必勝點和必敗點的性質 1 所有終結點是 必敗點 p 我們以此為基本前提進行推理,換句話說,...