zoukankan      html  css  js  c++  java
  • Anton and Chess(模拟+思维)

    http://codeforces.com/group/1EzrFFyOc0/contest/734/problem/D

    题意:就是给你一个很大的棋盘,给你一个白棋的位置还有n个黑棋的位置,问你黑棋能否一步就吃掉白棋

    给你如下规则

    1.‘B‘只能对角线移动,而且不能越过其他黑棋。

    2.’R‘只能上下左右移动,而且不能越过其他黑棋。

    3.‘Q’既能对角线移动又能左右移动,但是不能越过其他黑棋。

    这是看了别人的代码,很长,但只是粘贴复制,再改一下一下就行了;

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<string>
     7 #include<cmath>
     8 #include<set>
     9 #include<vector>
    10 #include<stack>
    11 #include<queue>
    12 #include<map>
    13 using namespace std;
    14 #define ll long long
    15 #define se second
    16 #define fi first
    17 const int INF= 0x3f3f3f3f;
    18 const int N=5e5+5;
    19 
    20 int n,x,y;
    21 
    22 struct note{
    23     int x;
    24     int y;
    25     char c;
    26 }a[N];
    27 struct note1{
    28     int s;
    29     char q;
    30 }dis[9];
    31 
    32 int main()
    33 {
    34     cin>>n;
    35     cin>>x>>y;
    36 
    37     for(int i=1;i<=8;i++)
    38         dis[i].s=INF<<1;
    39 
    40     for(int i=1;i<=n;i++)
    41     {
    42         cin>>a[i].c;
    43         scanf("%d%d",&a[i].x,&a[i].y);
    44         if( a[i].y==y && a[i].x-x>0 && dis[1].s>a[i].x-x ){
    45             dis[1].s = a[i].x -x;
    46             dis[1].q = a[i].c; //最近的更新为 c
    47         }
    48         else if( a[i].y==y && x-a[i].x>0 && dis[2].s>x-a[i].x ){
    49             dis[2].s = x- a[i].x ;
    50             dis[2].q = a[i].c; //最近的更新为 c
    51         }
    52         else if( a[i].x==x && a[i].y-y>0 && dis[3].s>a[i].y-y ){
    53             dis[3].s = a[i].y -y;
    54             dis[3].q = a[i].c; //最近的更新为 c
    55         }
    56         else if( a[i].x==x && y-a[i].y>0 && dis[4].s>y-a[i].y ){
    57             dis[4].s = y- a[i].y ;
    58             dis[4].q = a[i].c; //最近的更新为 c
    59         }
    60         else if(abs(a[i].x-x)==abs(a[i].y-y) && a[i].x>x &&a[i].y>y &&dis[5].s>abs(a[i].x-x))
    61         {
    62             dis[5].s =abs(a[i].x-x);
    63             dis[5].q = a[i].c;
    64         }
    65         else if(abs(a[i].x-x)==abs(a[i].y-y) && a[i].x<x &&a[i].y>y &&dis[6].s>abs(a[i].x-x))
    66         {
    67             dis[6].s =abs(a[i].x-x);
    68             dis[6].q = a[i].c;
    69         }
    70         else if(abs(a[i].x-x)==abs(a[i].y-y) && a[i].x<x &&a[i].y<y &&dis[7].s>abs(a[i].x-x))
    71         {
    72             dis[7].s =abs(a[i].x-x);
    73             dis[7].q = a[i].c;
    74         }
    75         else if(abs(a[i].x-x)==abs(a[i].y-y) && a[i].x>x &&a[i].y<y &&dis[8].s>abs(a[i].x-x))
    76         {
    77             dis[8].s =abs(a[i].x-x);
    78             dis[8].q = a[i].c;
    79         }
    80     }
    81     int flag=0;
    82     for(int i=1;i<=4;i++)
    83     {
    84         if(dis[i].q=='R'||dis[i].q=='Q') flag=1;
    85     }
    86     for(int i=5;i<=8;i++)
    87     {
    88         if(dis[i].q=='B'||dis[i].q=='Q') flag=1;
    89     }
    90     if(flag) cout<<"YES";
    91     else cout<<"NO";
    92 }
  • 相关阅读:
    Day10 作业
    深浅拷贝
    列表,字符串,字典,元组,集合内置方法
    Notification操作大全
    Recyclerview 顶部悬停 stick
    扩展AutoCompleteTextView让其默认显示一组列表。setThreshold
    获得了Root权限后Read-only file system
    Called attach on a child which is not detached
    CollapsingToolbarLayout Toolbar的title覆盖问题
    【转】Material Design 折叠效果 Toolbar CollapsingToolbarLayout AppBarLayout
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9295141.html
Copyright © 2011-2022 走看看