码迷,mamicode.com
首页 > 其他好文 > 详细

Anton and Chess(模拟+思维)

时间:2018-07-11 16:36:13      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:fine   using   inf   target   pac   main   int   思维   ace   

 

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 }

 

Anton and Chess(模拟+思维)

标签:fine   using   inf   target   pac   main   int   思维   ace   

原文地址:https://www.cnblogs.com/thunder-110/p/9295141.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!