1、sg打表:(可能會tle 把陣列改成bool型別即可)
//f:可以取走的石子個數//sg:0~n的sg函式值
//hash:mex{}
int f[n],sg[n],hash[n];
void getsg(int n)
中未出現的最小的非負整數}}
}
2、sg打表(dfs) (一般sg中等偏上的題都用dfs)
//注意 s陣列要按從小到大排序 sg函式要初始化為-1 對於每個集合只需初始化1遍//n是集合s的大小 s[i]是定義的特殊取法規則的陣列
int s[110],sg[10010],n;
int sg_dfs(int x)
}int e;
for(i=0;;i++)
if(!vis[i])
return sg[x]=e;
}
SG函式模板
首先定義mex minimal excludant 運算,這是施加於乙個集合的運算,表示最小的不屬於這個集合的非負整數。例如mex 3 mex 0 mex 0。對於乙個給定的有向無環圖,定義關於圖的每個頂點的sprague grundy函式g如下 g x mex,這裡的g x 即sg x 例如 取石...
SG函式模板
首先定義mex minimal excludant 運算,這是施加於乙個集合的運算,表示最小的不屬於這個集合的 非負整數 例如mex 3 mex 0 mex 0。對於乙個給定的有向無環圖,定義關於圖的每個頂點的 sprague grundy函式g如下 g x mex,這裡的g x 即sg x 例如 ...
sg函式模板
首先定義mex minimal excludant 運算,這是施加於乙個集合的運算,表示最小的不屬於這個集合的非負整數。例如mex 3 mex 0 mex 0。對於乙個給定的有向無環圖,定義關於圖的每個頂點的sprague grundy函式g如下 g x mex,這裡的g x 即sg x 例如 取石...