UVA 10561 Treblecross 组合游戏/SG定理
2013-08-06 10:01
309 查看
#include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> using namespace std; int sg[202];//sg[i]表示连续的x个空格子组成的棋盘的SG值 int vis[202]; void init() { int i,j,k; sg[0]=0; sg[1]=sg[2]=sg[3]=1; for(i=4;i<=200;i++) { memset(vis,0,sizeof(vis)); for(j=3;j<=5&&i-j>=0;j++) vis[sg[i-j]]=1; for(j=6;i-j>=0;j++) vis[sg[j-5]^sg[i-j]]=1; for(j=max(i-5,0);j<=i-3;j++) vis[sg[j]]=1; for(j=0;j<=200;j++) if(!vis[j]) { sg[i]=j; break; } } /*for(i=4;i<50;i++) cout<<sg[i]<<" "; cout<<endl;*/ } int e[202],f[202],g[202],n; int find() { int s=0,i,j,k=0; for(i=0;i<n;i++) { if(f[i]==0) k++; else { s=s^sg[k]; k=0; } } s=s^sg[k]; return s; } int main() { init(); char a[202]; int T; cin>>T; while(T--) { cin>>a; int i,j,k,flag=0,t=0; n=strlen(a); for(i=0;i<n;i++) { if(i<n-2&&a[i+1]=='X'&&a[i+2]=='X'){flag=1;e[t++]=i;} else if(i>0&&a[i-1]=='X'&&a[i+1]=='X'){flag=1;e[t++]=i;} else if(i>1&&a[i-1]=='X'&&a[i-2]=='X'){flag=1;e[t++]=i;} } if(flag) { cout<<"WINNING"<<endl; cout<<e[0]+1; for(i=1;i<t;i++) cout<<" "<<e[i]+1; cout<<endl; } else { memset(g,0,sizeof(g)); for(i=0;i<n;i++) if(a[i]=='X') { for(j=i-2;j<=i+2;j++) if(j>=0&&j<n) g[j]=1; } memcpy(f,g,sizeof(f)); if(find()==0) { cout<<"LOSING"<<endl<<endl; continue; } for(i=0;i<n;i++) { if(g[i]==0) { memcpy(f,g,sizeof(f)); for(j=i-2;j<=i+2;j++) if(j>=0&&j<n) f[j]=1; if(find()==0) e[t++]=i; } } cout<<"WINNING"<<endl; cout<<e[0]+1; for(i=1;i<t;i++) cout<<" "<<e[i]+1; cout<<endl; } } return 0; }
相关文章推荐
- UVA - 10561 Treblecross (SG定理)
- uva10561 - Treblecross SG定理
- uva10561 博弈 Treblecross 组合游戏/SG定理
- UVA 12293 Box Game 组合游戏/SG定理+找规律
- uva10561 - Treblecross
- UVA 10561 - Treblecross(博弈SG函数)
- UVALive/LA 5059 Play with Stones 组合游戏/SG定理
- [UVa 10561]Treblecross游戏
- UVa 10561 Treblecross (SG函数)
- UVa 10561 (SG函数 递推) Treblecross
- UVA 10561 Treblecross
- 【UVA 10561】 Treblecross|博弈论|SG函数
- uva 10561 Treblecross (SG函数)
- UVA 10561 - Treblecross(博弈SG函数)
- uva 10561 Treblecross(博弈)
- UVA - 10561 Treblecross (博弈数学&SG函数)
- uva 10561 - Treblecross(Nim)
- UVALive 7040 Color (容斥定理 + 递推求逆元 + 组合数 + 快速幂)
- UVA 10561 Treblecross(组合游戏_SG定理的应用)
- uva-1635-Irrelevant Elements-唯一分解定理,组合数