hdu 1536 (S-Nim) SG解法
2011-10-03 17:59
323 查看
这题折腾了好久,一直不知道怎么求解SG,感觉用递归的方法会超时,最后看代码,采用记忆某些已知的SG的方式,递归求解。其中还爆内存两次,是因为递归中的数组空间开辟过大,递归层次多了,很容易爆的。
code:
code:
#include <iostream> #include <algorithm> using namespace std; int SG[10001]; int setNum; int set[101]; int M,N; int getSG(int value) { int i =0 ; bool mex[101]={0}; for (i = 0 ; i < setNum ; i++) { int temp = value - set[i]; if (temp < 0) break; if (SG[temp] == -1) SG[temp] = getSG(temp); mex[SG[temp]] = true; } for (i = 0 ; ; i++) if (!mex[i]) break; return i; } int main() { int temp ; while (cin>>setNum && setNum) { memset(SG,-1,sizeof(SG)); SG[0]=0; for(int i =0 ; i < setNum ; i++) { cin>>set[i]; } sort(set,set+setNum); cin>>M; while(M--) { int ans =0 ; cin>>N; for (int i =0 ; i < N ; i++) { cin>>temp; if(SG[temp] == -1) SG[temp] = getSG(temp); ans^=SG[temp]; } if (ans) cout<<"W"; else cout<<"L"; } cout<<endl; } return 0; }
相关文章推荐
- hdu 1536 S-Nim(SG函数)
- Hdu 1536 S-Nim
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 1536 S-Nim (简单sg函数)
- HDU-1536-S-Nim
- hdu 1536——S-Nim
- HDU 1536 S-Nim(博弈论)
- hdu 1536 S-Nim
- hdu 1536 S-Nim(SG函数)
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 1536、hdu 1944 S-Nim(博弈SG函数)
- hdu 1536 S-Nim (博弈)
- HDU 1536 S-Nim 博弈,SG函数
- hdu 1536 S-Nim(SG函数)
- hdu 1536/ hdu 1944 S-Nim(sg函数)
- HDU 1536 S-Nim
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- HDU_1536 S-Nim(SG函数)
- hdu 1536/1944 / POJ 2960 / ZOJ 3084 S-Nim 博弈论
- hdu 1536 | hdu 1944 - S-Nim(博弈-SG)