SG函式相關知識理解
阿新 • • 發佈:2020-11-01
必勝點和必敗點的概念:
P點:必敗點,換而言之,就是誰處於此位置,則在雙方操作正確的情況下必敗。 N點:必勝點,處於此情況下,雙方操作均正確的情況下必勝。 必勝點和必敗點的性質: 1、所有終結點是 必敗點 P 。(我們以此為基本前提進行推理,換句話說,我們以此為假設) 2、從任何必勝點N 操作,至少有一種方式可以進入必敗點 P。 3、無論如何操作,必敗點P 都只能進入 必勝點 N。 SG定理:遊戲和的SG函式等於各個遊戲SG函式的Nim和。 首先定義mex運算,這是施加於一個集合的運算 表示最小的不屬於這個集合的非負整數。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。SG表示當前的SG值SG(x) = mex(S) S標記陣列 在進行mex操作時進行數字標記
int f[N],SG[maxn],S[maxn];
void getSG(int n)
{
int i,j;
memset(SG,0,sizeof(SG));
for(i = 1; i <= n; i++)
{
memset(S,0,sizeof(S));
for(j = 0; f[j] <= i && j <= N; j++)
S[SG[i-f[j]]] = 1;
for(j = 0;; j++) if(!S[j])
{
SG[i] = j;
break;
}
}
}