bzoj1457 棋盘游戏
2017-05-30 21:07
330 查看
可以发现,所有横纵坐标相等或者有一个为零的位置都是不能走的位置,这样就转化成了传统的求sg函数的问题。
#include<cstdio> #include<algorithm> using namespace std; const int maxn=100; int vis[maxn*5],sg[maxn][maxn],x[maxn*10],y[maxn*10],n; int solve() { int ans=0; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); for (int i=1;i<=n;i++) if (!x[i]||!y[i]) return 1; else ans^=sg[x[i]][y[i]]; return ans; } int main() { int mx=0; for (int i=1;i<maxn;i++) for (int j=1;j<maxn;j++) if (i!=j) { for (int k=0;k<=mx;k++) vis[k]=0; for (int k=1;k<i||k<j;k++) { if (k<i&&i-k!=j) vis[sg[i-k][j]]=1; if (k<j&&i!=j-k) vis[sg[i][j-k]]=1; if (k<i&&k<j) vis[sg[i-k][j-k]]=1; } for (int k=0;;k++) if (!vis[k]) { sg[i][j]=k; mx=max(mx,k); break; } } int T; scanf("%d",&T); while (T--) if (solve()) printf("^o^\n"); else printf("T_T\n"); }
相关文章推荐
- bzoj 1457: 棋盘游戏 sg函数
- 【博弈论】【SG函数】bzoj1457 棋盘游戏
- BZOJ 1457 棋盘游戏 SG函数
- BZOJ 1457: 棋盘游戏 SG函数
- BZOJ1457 棋盘游戏
- 【博弈】【bzoj 1457】: 棋盘游戏
- BZOJ 1457 棋盘游戏 SG函数
- BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)
- 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)
- BZOJ 3901 棋盘游戏 解题报告
- 【BZOJ 3106】【CQOI 2013】棋盘游戏
- BZOJ 3106: [cqoi2013]棋盘游戏
- 1457: 棋盘游戏
- [bzoj3106][cqoi2013][棋盘游戏] (对抗搜索+博弈论)
- bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏
- 【BZOJ3901】棋盘游戏 局部暴枚取优
- HDU 1281 棋盘游戏(二分图最大匹配:关键边)
- bzoj 4911: [Sdoi2017]切树游戏
- 51nod 1327 棋盘游戏
- BZOJ 4169: Lmc的游戏