HDU 3980 Paint Chain(博弈论,SG函数)
来源:互联网 发布:武装突袭3低配置优化 编辑:程序博客网 时间:2024/06/07 03:42
本题是NIM博弈的一个小小的变形,利用SG函数可以轻松解出
关于SG函数,大家可以参考这篇文章:
http://blog.csdn.net/logic_nut/article/details/4711489
他讲解的很好,但是代码看的时候非常的不舒服,我这边代码都加了详细注释,大家可以拿去参考一下
#include <bits/stdc++.h>using namespace std;int n,m;int sg[1010];//sg列表bool vis[1010];//能由上个状态到达的状态的标记(mex集合)void getSG(int len){ memset(sg,0,sizeof(sg)); for(int i=1;i<=len;i++)//从1开始遍历到len打sg表 { memset(vis,false,sizeof(vis)); for(int j=0;i-j-m>=0;j++)//对于每种能到达的情况,添加进mex集合 { vis[sg[i-j-m]^sg[j]]=true;//此条件在每到题中不同,状态转换 } for(int j=0;j<=len;j++)//找不在mex中的最小自然数并赋值给sg[i] { if(!vis[j]) { sg[i]=j; break; } } }}int main(){ std::ios::sync_with_stdio(false); std::cin.tie(0); int t; cin>>t; for(int cas=1;cas<=t;cas++) { cin>>n>>m; memset(sg,-1,sizeof(sg)); printf("Case #%d: ", cas); getSG(n-m); if(n<m||sg[n-m]) printf("abcdxyzk\n"); else printf("aekdycoin\n"); } return 0;}
0 0
- HDU 3980 Paint Chain(博弈论,SG函数)
- HDU 3980 Paint Chain(SG函数)
- hdu 3980 Paint Chain (sg函数 )
- hdu 3980 Paint Chain(SG函数)
- HDU 3980 Paint Chain(博弈 SG)
- HDOJ 3980 Paint Chain 博弈 SG函数
- Hdu 2980Paint Chain(博弈论)
- hdu3980 Paint Chain SG函数
- HDU3980 Paint Chain SG函数
- HDU 3980 Paint Chain(SG环链游戏)
- SG函数(博弈论)
- 博弈论 (SG函数)
- 博弈论(sg函数)
- HDU 3980 Paint Chain
- hdu 3980 Paint Chain
- HDU 1848Fibonacci again and again(博弈论:sg函数)
- HDU 1729 Stone Game 【博弈论,SG函数】
- HDU 5724-Chess-博弈论-sg函数
- 微信小程序 scroll-view下拉刷新
- tensorflow 官网安装
- 1033: 立方和不等式
- 页面导入样式时,使用link和@import有什么区别?
- 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法
- HDU 3980 Paint Chain(博弈论,SG函数)
- 【layui】表单元素radio不显示渲染
- 性能优化二十一之安装包性能优化
- Easy-3
- Android 混淆
- POJ.2524 Ubiquitous Religions (并查集)
- Collections.synchronizedMap()
- linux常见问题案例总结(root密码忘记,设置grub密码,grub修复)
- `ZooKeeper`在线迁移