• Codeforces Round 212 Div 2 报告(以前没写完,现在也没心情补了,先就这样吧)


      A. Two Semiknights Meet

      题目大意:有一个8x8的棋盘,上面放有两个骑士,骑士以“田字”的方式走。每个方格都被定义为good或者bad,问骑士能否在good的格子中相遇?

      由于骑士最初位于good的格子中,并且骑士可以按原路返回,所以只需判断骑士是否能够相遇就行了(相遇后可以返回任意一个骑士的初始位置)。根据骑士的移动特性,两个骑士位置的行和列之差应该为4的倍数。

      自己开始的时候,还试图计算相遇位置,然后bfs逐个验证,想麻烦了...

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdlib>
     5 using namespace std;
     6 typedef pair<int, int> pii;
     7 
     8 const int N = 8;
     9 int m[N][N];
    10 pii knight[2];
    11 
    12 bool judge()
    13 {
    14     int row_diff = abs(knight[0].first - knight[1].first);
    15     int col_diff = abs(knight[0].second - knight[1].second);
    16     if (row_diff % 4 != 0 || col_diff % 4 != 0)  return false;
    17     return true;
    18 }
    19 
    20 int main()
    21 {
    22 #ifdef LOCAL
    23     freopen("in", "r", stdin);
    24 #endif
    25     int T;
    26     scanf("%d", &T);
    27     getchar();
    28     while (T--)
    29     {
    30         // read data
    31         char s[20];
    32         int p = 0;
    33         memset(m, 0, sizeof(m));
    34         for (int i = 0; i < 8; ++i)
    35         {
    36             gets(s);
    37             for (int j = 0; j < 8; ++j)
    38             {
    39                 if (s[j] == '#')  m[i][j] = 1;
    40                 else if (s[j] == 'K')
    41                 {
    42                     m[i][j] = 1;
    43                     knight[p++] = make_pair(i,j);
    44                 }
    45             }
    46         }
    47         if (T)  gets(s);
    48 
    49         if (judge())  printf("YES
    ");
    50         else  printf("NO
    ");
    51     }
    52     return 0;
    53 }
    A
  • 相关阅读:
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    Interesting Finds: 2010 02.08 ~ 02.13
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3425006.html
Copyright © 2020-2023  润新知