您的位置:首页 > 其它

【多校练习4签到题】HDU 4642—— Fliping game

2013-08-04 20:53 274 查看
来源:点击打开链接

看上去很难,比赛的时候光看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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: