【HDOJ1536】S-Nim(博弈)
2016-08-06 14:16
501 查看
记录一个菜逼的成长。。
大致题意:
给你一个a数组 每次可以取a[i]个,q次询问,每次询问 共有m堆,因为sg函数是一堆的,所以将每堆的sg值异或就是答案。
大致题意:
给你一个a数组 每次可以取a[i]个,q次询问,每次询问 共有m堆,因为sg函数是一堆的,所以将每堆的sg值异或就是答案。
#include <bits/stdc++.h> using namespace std; const int maxn = 10000 + 10; int s[110]; int sg[maxn]; bool Hash[maxn]; //bool 换成 int 就会超时。。原因在于sg_solve函数里的memset.. void sg_solve(int *a,int n) { memset(sg,0,sizeof(sg)); for( int j,i = 1; i <= maxn - 5; i++ ) { memset(Hash,0,sizeof(Hash)); for( j = 0 ; j < n; j++ ){ if(i - a[j] >= 0)Hash[sg[i-a[j]]] = 1; } for( j = 0; j <= maxn - 5; j++ ) if(!Hash[j])break; sg[i] = j; } } int main() { int n,m,ans,q; while(~scanf("%d",&n),n){ for( int i = 0; i < n; i++ ) scanf("%d",s+i); sg_solve(s,n); scanf("%d",&q); while(q--){ scanf("%d",&m); ans = 0; for( int i = 0,x; i < m; i++ ){ scanf("%d",&x); ans ^= sg[x]; } printf("%c",ans?'W':'L'); } puts(""); } return 0; }
相关文章推荐
- HDOJ 1536 S-Nim 博弈 SG函数
- 杭电1536 S-Nim(博弈模板)
- HDOJ 1850Being a Good Boy in Spring Festival(nim博弈)
- hdu1536 & 1944 S-NIM 博弈 SG函数
- 20140715 「博弈 - Nim(尼姆)博弈」 HDOJ 2509 Be the Winner
- 20140715 「博弈 - Nim(尼姆)博弈」 HDOJ 1907 John
- HDU 1536 S-Nim (博弈 sg函数 Nim和)
- HDOJ 1536 S-Nim
- hdu 1536 | hdu 1944 - S-Nim(博弈-SG)
- HDU 1536 S-Nim 博弈,SG函数
- HDOJ 1850 Being a Good Boy in Spring Festival(Nim博弈)
- HDU/HDOJ1851 nim博弈和巴什博弈的结合
- HDOJ 1536 S-Nim解题报告
- poj 2960,hdu 1536 S-NIM 博弈
- HDOJ-1536 S-Nim
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- HDOJ 3032 Nim or not Nim? (博弈 :SG)
- HDOJ 1536 S-NIM
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 1536、hdu 1944 S-Nim(博弈SG函数)