【多校练习4签到题】HDU 4642—— Fliping game
2013-08-04 20:53
274 查看
来源:点击打开链接
看上去很难,比赛的时候光看hehe了,也没有想。
但是仔细想想,是可以想出来的。一个棋盘上每个格子摆放一个硬币,硬币有正面1和反面0之分。现在两个人可以按照规则翻硬币,选择(x,y),要求(x,y)的硬币必须是正面,那么从(x,y)向右下角所有的硬币都被翻转。知道某个人无法翻(所有硬币都是反面)为止,这个人判输。
有一种特殊情况,那就是右下角,每次都被反转。
无论如何翻,如果右下角开始的是1,则Alice赢,反之后手赢。因为其他的硬币不论怎么翻,右下角的硬币永远是这样,所以其他的策略不重要。明白了这一点,这个题就水爆炸了。
看上去很难,比赛的时候光看hehe了,也没有想。
但是仔细想想,是可以想出来的。一个棋盘上每个格子摆放一个硬币,硬币有正面1和反面0之分。现在两个人可以按照规则翻硬币,选择(x,y),要求(x,y)的硬币必须是正面,那么从(x,y)向右下角所有的硬币都被翻转。知道某个人无法翻(所有硬币都是反面)为止,这个人判输。
有一种特殊情况,那就是右下角,每次都被反转。
无论如何翻,如果右下角开始的是1,则Alice赢,反之后手赢。因为其他的硬币不论怎么翻,右下角的硬币永远是这样,所以其他的策略不重要。明白了这一点,这个题就水爆炸了。
#include <iostream> #include <cstring> #include <cstdio> #include <string> using namespace std; int mat[109][109]; int main() { int testcase; cin>>testcase; while(testcase--) { memset(mat,0,sizeof(mat)); int n,m; cin>>n>>m; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) scanf("%d",&mat[i][j]); } if(mat[n-1][m-1]==1) cout<<"Alice"<<endl; else cout<<"Bob"<<endl; } return 0; }
相关文章推荐
- 【多校练习4签到题】HDU 4642—— Fliping game
- hdu 4642 fliping game 多校联合训练第四场
- 2013 多校联合4 1011 Fliping game (hdu 4642)
- HDU 4642 Fliping game (2013多校4 1011 简单博弈)
- 2013 多校联合4 1011 Fliping game (hdu 4642)
- HDU 5389 Zero Escape(动态规划)——多校练习8
- HDU-4642-Fliping game
- hdu 4642 Fliping game(博弈)
- HDU 5386 Cover(暴力+逆推)——多校练习8
- HDU 4642 Fliping game 解题报告
- HDU 5407 CRB and Candies(数学 素数表+预处理+快速幂+乘法逆元)——多校练习10
- HDU-4642 Fliping game 简单博弈
- HDU 5399 Too Simple(过程中稍微用了一下dfs)——多校练习9
- HDU 5416 CRB and Tree(dfs+邻接表)——多校练习10
- hdu - 4642 - Fliping game(博弈)
- HDU 4642 Fliping game(简单博弈)
- HDU 4642 Fliping game
- HDU 5414 CRB and String(字符串处理)——多校练习10
- HDU 4642 多校四-1011
- HDU 4642 - Fliping game(博弈)