[SG函数] BZOJ1188: [HNOI2007]分裂游戏
2017-11-26 16:20
405 查看
可以发现,一颗石子可以看作是一个独立的游戏。
n 很小,瞎暴力求 SG 函数就好啦。
n 很小,瞎暴力求 SG 函数就好啦。
#include<cstdio> #include<algorithm> using namespace std; const int maxn=105; int _test,n,allsg,a[maxn],sg[maxn],vis[maxn],clk,ans,ans1,ans2,ans3; int main(){ scanf("%d",&_test); while(_test--){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sg =0; for(int i=n-1;i>=1;i--){ clk++; for(int j=i+1;j<=n;j++) for(int k=j;k<=n;k++) vis[sg[j]^sg[k]]=clk; for(int j=0;j<=100;j++) if(vis[j]!=clk){ sg[i]=j; break; } } ans1=ans2=ans3=ans=0; for(int i=n-1;i>=1;i--) if(a[i]) for(int j=n;j>=i+1;j--) for(int k=n;k>=j;k--){ a[i]--; a[j]++; a[k]++; allsg=0; for(int t=1;t<=n;t++) allsg^=(a[t]&1)*sg[t]; if(allsg==0){ ans++; ans1=i; ans2=j; ans3=k; } a[i]++; a[j]--; a[k]--; } printf("%d %d %d\n%d\n",ans1-1,ans2-1,ans3-1,ans); } return 0; }
相关文章推荐
- bzoj 1188 : [HNOI2007]分裂游戏 sg函数
- 【博弈论】【SG函数】【枚举】bzoj1188 [HNOI2007]分裂游戏
- bzoj 1188: [HNOI2007]分裂游戏 sg函数
- [BZOJ1188][HNOI2007]分裂游戏(SG函数)
- BZOJ1188 [HNOI2007]分裂游戏(SG函数)
- BZOJ1188 [HNOI2007]分裂游戏(SG函数)
- 【SG函数】BZOJ1188(HNOI2007)[分裂游戏]题解
- [BZOJ1188][HNOI2007]分裂游戏(博弈SG函数)
- bzoj 1188 [HNOI2007]分裂游戏(SG函数,博弈)
- bzoj 1188: [HNOI2007]分裂游戏(sg函数)
- [BZOJ 1188] [HNOI2007] 分裂游戏 【博弈论|SG函数】
- BZOJ 1188 [HNOI2007]分裂游戏 SG函数
- bzoj1188: [HNOI2007]分裂游戏
- [BZOJ1188][HNOI2007]分裂游戏(博弈论)
- BZOJ 1188: [HNOI2007]分裂游戏 博弈论
- BZOJ1188: [HNOI2007]分裂游戏(洛谷P3185)
- BZOJ 1188 [HNOI 2007]分裂游戏 (博弈)
- bzoj 1188 [HNOI2007]分裂游戏
- bzoj1188: [HNOI2007]分裂游戏
- bzoj1188 [HNOI2007]分裂游戏