首先理解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(f),其中f 是 x 后继状态的sg函数值的集合(就是上述mex中的数值)。最后返回值(也就是sg(x))为0为必败点,不为零必胜点。

看不懂,咱直接来个例子:

例如:取石子问题,有1堆n个的石子,每次只能取{1,3,4}个石子,先取完石子者胜利,那么各个数的SG值为多少?

sg[0]=0,f[]={1,3,4},

x=1时,可以取走1-f{1}个石子,剩余{0}个,mex{sg[0]}={0},故sg[1]=1;

x=2时,可以取走2-f{1}个石子,剩余{1}个,mex{sg[1]}={1},故sg[2]=0;

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]}={2,0,1},故sg[5]=3;

以此类推.....

x         0  1  2  3  4  5  6  7  8....

sg[x]      0  1  0  1  2  3  2  0  1...

计算从1-n范围内的SG值。

f(存储可以走的步数,f[0]表示可以有多少种走法)

这下就ojbk了吧

f[]需要从小到大排序

1.可选步数为1~m的连续整数,直接取模即可,SG(x) = x % (m+1);

2.可选步数为任意步,SG(x) = x;

3.可选步数为一系列不连续的数,用GetSG()计算

再附个模板吧

 1 //f[]:可以取走的石子个数
2 //sg[]:0~n的SG函数值
3 int f[maxn],sg[maxn],mex[maxn];
4 void getSG(int n){
5 int i,j;
6 memset(sg,0,sizeof(sg));
7 for(i=1;i<=n;i++){
8 memset(mex,0,sizeof(mex));
9 for(j=1;f[j]<=i&&f[j]<=m;j++) //注意加f[i]的限定条件,此处为f[j]<=m
10 mex[sg[i-f[j]]]=1;
11 for(j=0;j<=n;j++){ //求mex中未出现的最小的非负整数
12 if(mex[j]==0){
13 sg[i]=j;
14 break;
15 }
16 }
17 //cout<<i<<" "<<sg[i]<<endl;
18 }
19 }

最新文章

  1. 【Java之对象清理】finalize()的用途
  2. Redis学习笔记(3) Redis基础类型及命令之二
  3. jquery CRUD一个元素class属性
  4. ubuntu 13.04下MYSQL 5.5环境搭建
  5. org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序报错
  6. JavaScript数据类型(转)
  7. 【leetcode❤python】350. Intersection of Two Arrays II
  8. 基于XMPP协议的手机多方多端即时通讯方案
  9. Sublime Text 3 常用快捷键总结
  10. display:inline-block的深入理解
  11. 引用 IP电话的原理结构及其关键技术
  12. POJ 3923 HDU 2487 Ugly Windows 简单计算
  13. Free Pascal初次体验(有亮点哦)
  14. 可视化利器Visdom
  15. unittest各个组件之间的关系
  16. spring学习总结——装配Bean学习一(自动装配)
  17. WPF DataGrid中鼠标双击某一列,弹出窗体作为(增加、修改、详细)按钮的快捷键。
  18. DL_1_week1_概论
  19. Prepare paddle in Docker
  20. linux 常用命令-tar(压缩、解压)

热门文章

  1. Linux 启动流程及相关知识
  2. 记一次删除k8s namespace无法删除的问题
  3. height,min-height,max-heigth的作用机制问答
  4. python 操作xml、html文件
  5. 清北学堂 2020 国庆J2考前综合强化 Day2
  6. 彻底弄清楚session,cookie,sessionStorage,localStorage的区别及应用场景(面试向)
  7. 万答#14,xtrabackup8.0怎么恢复单表
  8. tomcat线程池
  9. 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
  10. nmtui 字符界面图形模式配置