#include#include #include using namespace std; const int K=101; const int H=10001;//H是我们要打表打到的最大值 int k,m,l,h,s[K],sg[H],mex[K];///k是集合元素的个数 s[]是集合 mex大小大约和集合大小差不多 ///注意s的排序 void sprague_grundy() { int i,j; sg[0]=0; for (i=1;i =s[j]){ mex[sg[i-s[j]]]=1; j++; } j=0; while (mex[j]) j++; sg[i]=j; } } int main(){ int tmp,i,j; scanf("%d",&k); while (k!=0){ for (i=1;i<=k;i++) scanf("%d",&s[i]); sort(s+1,s+k+1); //这个不能少 sprague_grundy(); scanf("%d",&m); for (i=0;i
hdu 1536 SG函数模板题 千万注意游戏的组合用SG函数值异或 是SG函数的值啊 (二)
,&k)!=EOF)
{
if(!k) break;
memset(SG,-1,sizeof(SG));
for(i=0;i