幾乎可以用於求任何博弈問題 sg函式///f:可以取走的石子個數
///sg:0~n的sg函式值
///hash:mex{}
int f[k],sg[n],hash[n];
void getsg(int n) 中未出現的最小的非負整數
if(hash[j]==0) }}
}
比如5堆石子,每次可以取1,2,4個這種問題
以hdu1848為例
#include #include #include #include using namespace std;
const int maxn = 2000 + 7;
int n, m, p;
int sg[maxn], ha[maxn], fib[maxn];
void getsg()}}
return ;
}int main()
}
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 例如 取石...