x=3时,可以取走3-f{1,3}个石子,剩余{2,0}个,mex{sg[2],sg[0]}={0,0},故sg[3]=1; x=4时,可以取走4-f{1,3,4}个石子,剩余{3,1,0}个,mex{sg[3],sg[1],sg[0]}={1,1,0},故sg[4]=2; x=5时,可以取走5-f{1,3,4}个石子,剩余{4,2,1}个,mex{sg[4],sg[2],sg[1]}...
SG函数模板 #include<stdio.h>#include<string.h>#defineMAXN 1000 + 10#defineN 20intf[N],SG[MAXN],S[MAXN];voidgetSG(intn){inti,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.可选步数为1~m的连续整数,直接取模即可,SG(x) = x % (m+1); 2.可选步数为任意步,SG(x) = x; 3.可选步数为一系列不连续的数,用GetSG()计算 模板1如下(SG打表): //f[]:可以取走的石子个数 //sg[]:0~n的SG函数值 //hash[]:mex{} int f[N],sg[N],hash[N]; void getSG(int ...
1 //f[]:可以取走的石子个数 2 //sg[]:0~n的SG函数值 3 //hash[]:mex{} 4 int f[K],sg[N],hash[N]; 5 void getSG(int n) 6 { 7 memset(sg,0,sizeof(sg)); 8 for(int i=1; i<=n; i++) { 9 memset(hash,0,sizeof(hash)); 10 for(int j=0; f[j]<=i && j < k...
SG函数模板 2013-07-19 02:42 −... jumpingfrog0 1 8962 sg函数入门理解 2019-08-08 12:37 −首先理解sg函数必须先理解mex函数 mex是求除它集合内的最小大于等于0的整数,例:mex{1,2}=0;mex{2}=0;mex{0,1,2}=3;mex{0,5}=1。 而sg函数是啥呢? 对于任意状态 x , 定义 sg(x) = mex...
原博文 SG函数模板 2017-11-25 01:46 −... Bryce1010 0 85 Java并发之synchronized关键字和Lock接口 2019-12-01 00:34 − >欢迎点赞阅读,一同学习交流,有疑问请留言 。 >GitHub上也有开源 [Jav...
SG[]:0-n的SG函数值 S[]:x后继状态的集合 mex{}:表示最小的不属于这个集合的非负整数 举个栗子:一堆n个的石头,每次只能取{1,3,5}个石头,先取完石头的赢。 首先SG[0]=0是恒定不变的。 x为1时,最多只能取1个石头了,取完之后剩0个,所以SG[1]=mex{SG[0]}=mex{0}=1; ...
SG函数 模板 1 int get_SG(int x) 2 { 3 if (SG[x]!=-1) 4 return SG[x]; 5 bool v[110]={0}; 6 for (int i=1;i<=n;i++) 7 if (x-s[i]>=0) 8 v[get_SG(x-s[i])]=1; 9 int i; 10 for (i=0;v[i];i++); 11 SG[x]=i; 12 return i; 13 } Every day ...
hdu 1536 - SG函数模板,题目链接:点击打开链接题解思路:SG模板自行百度#include<bits/stdc++.h>usingnamespacestd;constintmx=1e4+10;intn,m;intst[mx],sg[mx];voidget_sg(){boolvis[mx];memset(sg,0,sizeof(sg));for(inti=1;i&l
SG函数模板 #include <stdio.h> #include <string.h> #define MAXN 1000 + 10 #define N 20 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));...