UVa 12293 Box Game(博弈,SG函数)
来源:互联网 发布:淘宝数据包上传 编辑:程序博客网 时间:2024/06/08 12:31
用当前人可以分配的球数就可以代表一个状态,开始Alice拿掉那个1个球的箱子后,剩下n个球由他来分配,分配为一多一少后,Bob所分配的球数是多的箱子中的数量。
即,球数n可以转化为(n+1)/2~n-1间的一个数。用这个规律递推SG值。SG(n)=除所有n能到达的状态的SG值以外,最小的非负整数。必败状态SG值为0,显然1是一个必败状态。SG值用记忆化搜索求出。
对前1000个数测试后发现SG值为0的数恰好是所有的2^n-1
代码:
#include <iostream>#include <cstdio>#include <cstring>using namespace std;#include <set>/*int SG[1000];bool vis[1000];int Find(int n){if(vis[n]) return SG[n];bool next[1000];memset(next,0,sizeof(next));for(int i=((n+1)/2);i<n;i++){next[Find(i)]=1;}for(int i=0;i<=n;i++){if(!next[i]){SG[n]=i;break;}}vis[n]=1;return SG[n];}*/int main(){set <int> lose;int cur=2;for(int i=2;i<=29;i++){cur*=2;lose.insert(cur-1);}int N;while(~scanf("%d",&N)){if(!N) break;if(lose.count(N)) printf("Bob\n");else printf("Alice\n");}return 0;}
0 0
- UVa 12293 Box Game(博弈,SG函数)
- UVA 12293 - Box Game (博弈)
- UVA 12293 Box Game(博弈入门)
- UVA 12293 - Box Game(博弈)
- UVa 12293 Box Game [博弈]
- 【lightOJ】 Partitioning Game (博弈,sg函数)
- UVA 12293 Box Game 组合游戏/SG定理+找规律
- UVA 11859 - Division Game (SG博弈)
- hdu 1079 Calendar Game 博弈(组合游戏) sg函数
- HDU ACM 1524 A Chess Game->博弈(SG函数)
- POJ 3710 Christmas Game(Tarjan+博弈SG函数)
- [POJ2311]Cutting Game(博弈Multi-SG函数)
- HDU 1846-Brave Game(巴什博弈-SG函数)
- LightOJ 1315 - Game of Hyper Knights(博弈sg函数)
- HDU 1079 Calendar Game (博弈 sg函数)
- HDU 1729 Stone Game(博弈 + SG函数)
- hdoj 1851 A Simple Game(组合博弈, sg函数)
- [POJ2425]A Chess Game(博弈SG函数)
- jvm的几个运行时数据区域
- AudioManager黑名单来电自动静音
- 日经社説 20150310 東京大空襲70年が問うもの
- SD/MMC异同
- echarts图形报表缓存问题(option数据缓存)
- UVa 12293 Box Game(博弈,SG函数)
- Python 重要标准库1
- 严蔚敏--快速排序
- IOS单例代码
- js获取Url参数的一般方法
- 日经社説 20150310 日独は国際秩序の安定へ協力強化を
- 《java解惑》--表达式之谜
- 解决asp.net MVC 中局部刷新的问题
- ACCESS数据库增强器需求及介绍