标签:hdu
2 2 2 1 1 1 1 3 3 0 0 0 0 0 0 0 0 0
Alice Bob题意:给出一个矩阵,每个格子有一个硬币,初始状态1代表面朝上,0代表面朝下,两人轮流翻硬币,每次选一个面朝上的硬币,这个硬币为左上角,n,m的硬币为右下角,然后将这个矩形内的硬币都翻转一次,使得全部硬币变成面朝下的时候,轮到谁的时候不能再翻转硬币的时候,那个人输思路:我们可以发现,无论是谁翻硬币,n,m位置的硬币必然会被翻转,那么其实我们只需要考虑n,m处的硬币,只要是1,那么必然要无论其他位置怎么翻转,这个位置必须要奇数次才能变成0,所以必然是奇数次,A胜,反之如果是0,必然是偶数次,B胜#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <math.h> #include <bitset> #include <algorithm> #include <climits> using namespace std; #define ls 2*i #define rs 2*i+1 #define UP(i,x,y) for(i=x;i<=y;i++) #define DOWN(i,x,y) for(i=x;i>=y;i--) #define MEM(a,x) memset(a,x,sizeof(a)) #define W(a) while(a) #define gcd(a,b) __gcd(a,b) #define LL long long #define N 205 #define MOD 1000000007 #define INF 0x3f3f3f3f #define EXP 1e-8 #define rank rank1 const int mod = 10007; int t,n,m,i,j,x; int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i = 0; i<n; i++) { for(j = 0; j<m; j++) scanf("%d",&x); } if(x) printf("Alice\n"); else printf("Bob\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:hdu
原文地址:http://blog.csdn.net/libin56842/article/details/46876051