hdu 1847 SG递推入门
来源:互联网 发布:网络红酒业务员好做吗 编辑:程序博客网 时间:2024/06/13 01:06
点击打开链接
http://wenku.baidu.com/link?url=47DequTlLK6bfAMcuRauPRYbJ5ZU5P8ChR9Jgbg7ZY4dPgkaY8p1RReXAuRpsbal-sbL1QEVFl3btKX4sKce3cQQY4tbIpRNjK9ogyaQYfK
/mex{}集合中没有的最小非负整数
g[x]=mex{g[yi]|yi为x的后继状态}
g[0]=0为必败态 非0为必胜态
如果g[x]后继状态都非0 则g[x]=0;
g[x]后继状态存在一个为0 则最优操作转移到该状态g[y]=0,则g[x]!=0 当前状态为必胜态
#include <iostream>#include <algorithm>#include <cstring>#include <map>#include <set>using namespace std;typedef long long ll;const int N=1e4+20;int g[N],a[15];void calc(){g[0]=0;for(int i=1;i<N;i++){set<int> s;for(int j=0;j<15;j++){if(i>=a[j])s.insert(g[i-a[j]]);}if(s.size()==0)//没有状态能转移g[i]=0;else{bool flag=false;set<int>::iterator it;for(it=s.begin();it!=s.end();it++){if(*it==0){flag=true;//后继有一个为必败态 则x为必胜态 break;}}if(flag)g[i]=1;//代表非0 即必胜态 elseg[i]=0;}s.clear(); }}int main(){a[0]=1;for(int i=1;i<15;i++)a[i]=1<<i;calc();//递推求SG函数 int n;while(cin>>n){if(g[n])cout<<"Kiki"<<endl;elsecout<<"Cici"<<endl;}return 0;}
0 0
- hdu 1847 SG递推入门
- hdu 1848 hdu 1536 博弈论sg函数入门
- HDU 1847 Good Luck in CET-4 Everybody!(sg入门题)
- hdu 1165 递推
- HDU 2050 递推
- [HDU-1035] 递推
- hdu 1143 递推
- hdu 3664 递推
- HDU 2045(递推)
- hdu递归,递推
- HDU 递推 1290
- HDU 1165(递推)
- HDU-2049【递推】
- hdu 2042 递推
- hdu 4472 递推
- HDU - 5110(递推)
- hdu 递推
- HDU 递推专题
- A星寻路算法介绍
- JavaScript中对象属性的特性
- 如何获取外置的SD卡路径
- 讲R里面的一个矩阵中的值,按大小进行替换
- 动力节点——this关键字(八)
- hdu 1847 SG递推入门
- 断开套接字连接-----网络编程(Linux----C)
- 安卓基础DAY03 笔记
- C语言简单小程序
- 深度学习-----思想篇 ( 六 )
- JS编程练习之选项卡的实现
- SlidingMenu与DrawerLayout的区别
- AngularJS 模板
- Floyd算法 及 递归输出路径