HDU 1536 S-Nim
2012-04-21 08:43
363 查看
师时隔几个月后,在看博弈NIM终于懂了,做出了第一道根据所有堆的异或和的题
题意:在一个Si容器中,输入可以行走的步数,然后在下面T组测试数据中,输入堆的情况
View Code
题意:在一个Si容器中,输入可以行走的步数,然后在下面T组测试数据中,输入堆的情况
View Code
#include<stdio.h> #include<algorithm> using namespace std; //数组超是开小了 还是开大了 int enable[101];//可以行走的步数 int SG[10001];//SG的数组大小是一堆石子的大小而不是数组的多少的大小 要区别 int k; bool cmp(int &a,int &b) { return a<b; } int get_SG(int a) { int temp,i; int judge[110]={0};//用来寻找mex点 for (i=0;i<k;i++) { temp=a-enable[i]; if(temp<0) break; if(SG[temp]==-1) SG[temp]=get_SG(temp); judge[SG[temp]]=1; } for (i=0;;i++) if(judge[i]==0) return i; } int main() { int T,i,n,am,j; while(scanf("%d",&k) && k) { for (i=0;i<k;i++) scanf("%d",&enable[i]); sort(enable,enable+k,cmp);//这里是题目的坑。。。 memset(SG,-1,sizeof(SG)); scanf("%d",&T); for (i=0;i<T;i++) { scanf("%d",&n); int ans=0; for (j=0;j<n;j++)//这里是第二次错了,当前面循环有i的时候这里不可以用i { scanf("%d",&am); if(SG[am]==-1) SG[am]=get_SG(am); ans^=SG[am]; } if(ans) printf("W"); else printf("L"); } printf("\n"); } return 0; }
相关文章推荐
- HDU 1536 与 1944 S-Nim
- HDU 1536 S-Nim
- HDU 1536 - S-Nim(SG)
- hdu 1536 S-Nim(SG函数)
- hdu_1536_S-Nim(DFS_SG博弈)
- hdu 1536 S-Nim (sg函数模版)
- hdu1536 S-Nim
- hdu1536 hdu1944 S-Nim
- 【hdu 1536】S-Nim
- hdu 1536 S-Nim(SG函数)
- hdu 1536 S-Nim
- HDU 1536 S-Nim
- hdu1536 & 1944 S-NIM 博弈 SG函数
- hdu 1536 S-Nim(SG函数)
- hdu 1536 S-Nim
- HDU 1536 S-Nim 求SG函数
- HDU 1536 S-Nim [SG函数]【博弈】
- 【HDU】1536 S-Nim
- hdu 1536 S-Nim (SG函数经典题)
- HDU 1536 S-Nim (博弈 sg函数 Nim和)