HDU 4642 Fliping game

Fliping game

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)php

Total Submission(s): 123    Accepted Submission(s): 89

ios

Problem Description
Alice and Bob are playing a kind of special game on an N*M board (N rows, M columns). At the beginning, there are N*M coins in this board with one in each grid and every coin may be upward or downward freely. Then they take turns to choose a rectangle (x 1, y 1)-(n, m) (1 ≤ x 1≤n, 1≤y 1≤m) and flips all the coins (upward to downward, downward to upward) in it (i.e. flip all positions (x, y) where x 1≤x≤n, y 1≤y≤m)). The only restriction is that the top-left corner (i.e. (x 1, y 1)) must be changing from upward to downward. The game ends when all coins are downward, and the one who cannot play in his (her) turns loses the game. Here's the problem: Who will win the game if both use the best strategy? You can assume that Alice always goes first.
 

 

Input
The first line of the date is an integer T, which is the number of the text cases. Then T cases follow, each case starts with two integers N and M indicate the size of the board. Then goes N line, each line with M integers shows the state of each coin, 1<=N,M<=100. 0 means that this coin is downward in the initial, 1 means that this coin is upward in the initial.
 

 

Output
For each case, output the winner’s name, either Alice or Bob.
 

 

Sample Input
2
2 2
1 1
1 1
3 3
0 0 0
0 0 0
0 0 0
 

 

Sample Output
Alice
Bob
 

 

Source
 

 多校第四場1011,一道博弈題問題web

由題意很容易發現,每次翻轉都會翻動到最右下角的那枚棋子,而獲勝的那我的最終把全部棋子都翻到反面去,也一定是翻動了那枚棋子。ide

所以第一次翻動時最右下角棋子的狀態就已經決定了勝負。若爲正面則Alice勝,反面則Bob勝this

 

 1 #include<iostream>
 2 #include<cstdio>
 3 
 4 using namespace std;
 5 
 6 int n,m;
 7 int g[200][200];
 8 
 9 int main()
10 {
11     int t;
12 
13     cin>>t;
14 
15     while(t--)
16     {
17         scanf("%d %d",&n,&m);
18 
19         for(int i=1;i<=n;i++)
20             for(int j=1;j<=m;j++)
21                 scanf("%d",&g[i][j]);
22 
23         if(g[n][m]==1)
24             cout<<"Alice"<<endl;
25         else
26             cout<<"Bob"<<endl;
27     }
28 
29     return 0;
30 }
[C++]
相關文章
相關標籤/搜索