題意:
乙個棋盤有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 我們以此為基本前提進行推理,換句話說,...