2015-04-10 01:54:56

总结:11点开的一场,看来明天汇编是上不了了 QAQ...

  好吧... 来看比赛,第一题打了一个暴力后发现是个技巧,果断改了,耗时比较多,166+分 = =!

  第二题又打了一个暴力...  不过姿势不好,fst 掉了。最后发现别人也是暴力,不过是姿势更加优美的枚举。这题靠大数据 cha 了一发 :P

 

A:简单来说就是判断一个图能否构成像国际象棋那样的图。黑白相间。

  发现把每个格子的横纵坐标相加,奇偶性一样的格子颜色须一样。

  那么我们按顺序找到第一个非 ‘?’ ,比如找到 ‘W’,判断同奇偶的格子是否都是 ‘W’ 或 ‘?’

  类似地再判断一遍 ‘B’ 即可。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <vector>
 6 #include <map>
 7 #include <set>
 8 #include <stack>
 9 #include <queue>
10 #include <string>
11 #include <iostream>
12 #include <algorithm>
13 using namespace std;
14 
15 #define MEM(a,b) memset(a,b,sizeof(a))
16 #define REP(i,n) for(int i=0;i<(n);++i)
17 #define FOR(i,a,b) for(int i=(a);i<=(b);++i)
18 #define getmid(l,r) ((l) + ((r) - (l)) / 2)
19 #define MP(a,b) make_pair(a,b)
20 
21 typedef long long ll;
22 typedef pair<int,int> pii;
23 const int INF = (1 << 30) - 1;
24 
25 #line 5 "BichromeBoard.cpp"
26 
27 class BichromeBoard {
28     int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
29     public:
30     string ableToDraw(vector <string> board) {
31         int n = board.size(),m = board[0].size();
32         vector <string> &g = board;
33         bool ans = true;
34         int f = -1;
35         int px,py;
36         for(int i = 0; i < n; ++i){
37             for(int j = 0; j < m; ++j) if(g[i][j] != '?'){
38                 if(g[i][j] == 'W') f = 0;
39                 else f = 1;
40                 px = i,py = j;
41                 break;
42             }
43             if(f != -1) break;
44         }
45         if(f != -1){
46             int st = (px + py) % 2;
47             for(int i = 0; i < n; ++i){
48                 for(int j = 0; j < m; ++j) if(g[i][j] != '?'){
49                     int cur = (i + j) % 2;
50                     int id = g[i][j] == 'W' ? 0 : 1;
51                     if(cur == st && id != f){
52                         ans = false;
53                         break;
54                     }
55                     if(cur != st && id == f){
56                         ans = false;
57                         break;
58                     }
59                 }
60                 if(ans == false) break;
61             }
62         }
63         if(ans) return "Possible";
64         else return "Impossible";
65     }
66 };
View Code

相关文章: