HDOJ2149反向SG函数
2015-08-24 22:08
369 查看
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; static int m,n; static int f[1200]; static int mex(int p) { bool g[1200]={0}; for (int i=1;i<=n;++i) { int t = p+i; if (t>m) break; if (f[t]==-1) f[t] = mex(t); g[f[t]] = 1; } for (int i=0;i<=n;i++) { if (!g[i]) return i; } } int main() { while(~scanf("%d %d",&m,&n)) { memset(f,-1,sizeof(f)); bool g[1200]={0}; for (int i=1;i<=n;++i) { int t = i; if (t>m) break; if (f[t]==-1) f[t] = mex(t); g[f[t]] = 1; } if (!g[0]) printf("none\n"); else { int ans[1200]={}; int cnt = 0; for (int i=1;i<=n;i++) if (!g[i])ans[cnt++] = i; for (int i=0;i<cnt-1;++i) printf("%d ",ans[i]); printf("%d\n",ans[cnt-1]); } } return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法
- C#实现的算24点游戏算法实例分析
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析