LightOJ 1401
来源:互联网 发布:猪肉绦虫知乎 编辑:程序博客网 时间:2024/06/05 16:51
No More Tic-tac-toe
LightOJ - 1401Alice was bored with the game tic-tac-toe. Usually she used to play against computer. She was so bored because, she always managed to make a tie against computer as she already became an expert in this game. She was also bored about the matching things, that means she does not like to see two adjacent 'X's or two adjacent 'O's. So Bob created a new computer game for her.
Here is the description of this new 2-player game:
1) A 1 x N grid will be given.
2) In each turn, a player can mark an unmarked cell by an 'X' or by an 'O' (it's not Zero it is big 'O').
3) No two adjacent 'X's are allowed in this game.
4) No two adjacent 'O's are allowed in this game.
5) The player who marks the last cell wins the game.
Let's have an example for N = 3. Suppose first player mark the leftmost cell with an 'X'. Then the grid will look like this:
From this state, the winning move of the second player is to mark the rightmost cell with an 'O'.
Now first player has no move, because in the only empty cell she cannot mark 'X' and cannot mark 'O' because the left of this cell is already marked 'X' and the right of this cell is marked 'O'. The second player will win.
But this is not an optimal example for first player. If in first move, the first player marks the middle cell with any one of 'X'or 'O', she will win.
Now about Bob's computer game, Alice always makes the first move. Alice usually used to start playing with Bob. But most often after some move, Bob gave his responsibility to the computer. Computer always plays optimally. You are given the state of the grid after Bob's departure and your task is to determine whether it is possible to win against computer from this state for Alice.
Input starts with an integer T (≤ 10000), denoting the number of test cases.
Each case starts with a line containing a string which represents the state of the game after Bob's departure. Here the length of the string is N (1 ≤ N ≤ 100). In this string besides 'X' and 'O', another character '.' is used, which represents an unmarked cell.
For each case, print the case number and 'Yes' if it is possible to win against computer, otherwise print 'No'.
5
...
X..
....O
..X..
O
Case 1: Yes
Case 2: No
Case 3: No
Case 4: Yes
Case 5: Yes
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cstdlib>#include <cmath>#include <vector>#include <queue>#include <map>#include <algorithm>#include <set>#include <functional>using namespace std;typedef long long LL;typedef unsigned long long ULL;const int INF = 1e9 + 5;const int MAXN = 100005;const int MOD = 1000000007;const double eps = 1e-8;const double PI = acos(-1.0);int T, n, sg[105], CAS;char s[105];void solve(){for (int i = 1; i < 102; i++){memset(s, 0, sizeof s);for (int j = 0; j < i; j++){if (j)s[sg[i - j - 1] ^ 1] = true;s[sg[i - j - 1]] = true;}while (s[sg[i]]){sg[i]++;}}}int main(){solve();scanf("%d", &T);while (T--){scanf(" %s", s);bool first = true;int l, r = -1, x;for ( n = 0; s[n]; n++){if (s[n]!='.'){first = !first, l = r, r = n;if (l < 0)x = sg[r];elsex ^= s[l] == s[r];}}if (r < 0)x = n & 1;elsex ^= sg[n - r - 1];printf("Case %d: %s\n", ++CAS, (x&&first) || (!(x || first)) ? "Yes" : "No");}}
- LightOJ 1401
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- [LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- LightOJ
- block写法
- IQKeyboardManager使用导航上移问题
- Java类初始化
- Topic匹配模式
- java内存模型
- LightOJ 1401
- windows 下多socket连接(二)
- 使用formdata+ajax文件上传中遇到的问题
- 为什么计算机会有补码这种奇怪的规则?
- objective-C call
- LinkedList源码
- 致tensorflow
- 机器学习精简教程之九——用scikit-learn的网格搜索快速找到最优模型参数
- Android-UI绘制分析01