HDU 1536 SG函数模板
来源:互联网 发布:java微信 api好友列表 编辑:程序博客网 时间:2024/05/22 06:48
题目:
多堆石子,先手胜为L,后手胜为W,
思路:
SG函数:
SG[i]=0表示先手必败,否则必胜
有多堆石子,每次对SG[k]的值亦或(^)最终为0则必败,否则必胜
#include<cstring>#include<string>#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>#include<queue>#include<vector>#include<map>#include<stack>#include<climits>#include<set>using namespace std;#define mod 1000000007#define PI acos(-1.0)#define INF 0x3f3f3f3ftypedef long long LL;const int N = 10008;int s[108],t;int sg[N];bool Hash[N];void sg_solve(int *s,int t,int n) //N求解范围 S[]数组是可以每次取的值,t是s的长度。{ int i,j; memset(sg,0,sizeof(sg)); for(i=1;i<=n;i++) { memset(Hash,0,sizeof(Hash)); for(j=0;j<t;j++) if(i - s[j] >= 0) Hash[sg[i-s[j]]] = 1; for(j=0;j<=N;j++) if(!Hash[j]) break; sg[i] = j; }}int main(){ int i,j,n,m,h; while(scanf("%d",&t),t) { string ans=""; for(i=0;i<t;i++) scanf("%d",&s[i]); sg_solve(s,t,N); scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); int res = 0; for(j=0;j<m;j++) { scanf("%d",&h); res ^= sg[h]; } ans+=res?'W':'L'; } cout<<ans<<endl; } return 0;}
0 0
- HDU 1536 SG函数模板
- HDU 1536 SG函数
- hdu 1536 sg函数
- HDU-1848--博弈SG函数模板题
- HDU 1536 求解SG函数
- hdu 1536 SG函数模板题 千万注意游戏的组合用SG函数值异或 是SG函数的值啊
- HDU 1536 && HDU 1944 S-Nim (Nim博弈、SG函数模板)
- SG 函数初步 HDU 1536 && HDU 1944
- SG函数模板
- SG函数模板
- SG函数模板
- SG函数模板
- SG函数模板
- SG函数模板
- SG函数模板
- sg函数模板
- SG函数模板
- SG函数模板
- 【Web容器】Tomcat源码分析(3)-生命周期管理
- 使用枚举代替常量,简化工作!
- Docker 构建 Java Web 开发环境——使用Dockerfile(二)
- 数据结构笔记--总结各种排序算法及其应用
- 【Web容器】Tomcat源码分析(4)-启动与停止服务
- HDU 1536 SG函数模板
- 一个礼拜的学习总结
- Linux Ubuntu服务器用户权限及安全登陆限制
- Java基础——类成员
- Effective C++_Item5笔记
- 局部变量与全局变量
- 数据结构笔记--总结各种查找算法及其应用
- 数据结构笔记--实际软件开发中用到的最多的数据结构和算法
- POJ2135 Farm Tour 最小费用流