http://codeforces.com/contest/734/problem/D

一开始的时候看不懂题目,以为象是中国象棋那样走,然后看不懂样例。

原来是走对角线的,长知识了。

所以我们就知道,王有八个方向,所以每个方向选一个来做代表就行了。

那么选谁呢?可以排序,按照他们离王的距离从小到大排,这样就能选出最近的那个(不用被棋挡住)

然后注意下方向的表达,在王的右上角,还要和王在同一对角线才行~不能简单地判x和y的大小关系

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
const int maxn = 500000 + 20;
LL xx0, yy0;
struct node {char ch;LL x, y;node() {}node(char cc, LL xx, LL yy) : ch(cc), x(xx), y(yy) {}bool operator < (const struct node & rhs) const {LL dis = (x - xx0) * (x - xx0) + (y - yy0) * (y - yy0);LL dis2 = (rhs.x - xx0) * (rhs.x - xx0) + (rhs.y - yy0) * (rhs.y - yy0);return dis < dis2;}
}arr[maxn];
vector<struct node>pos[66];
void work() {IOS;int n;cin >> n;cin >> xx0 >> yy0;for (int i = 1; i <= n; ++i) {char str[11];cin >> str;arr[i].ch = str[0];cin >> arr[i].x >> arr[i].y;}sort(arr + 1, arr + 1 + n);
//    for (int i = 1; i <= n; ++i) {
//        cout << arr[i].ch << " " << arr[i].x << " " << arr[i].y << endl;
//    }for (int i = 1; i <= n; ++i) {int face = 0;if (arr[i].x == xx0 && arr[i].y > yy0) face = 1;else if (arr[i].x < xx0 && arr[i].y > yy0 && arr[i].x + arr[i].y == xx0 + yy0) face = 2;else if (arr[i].y == yy0 && arr[i].x < xx0) face = 3;else if (arr[i].x < xx0 && arr[i].y < yy0 && arr[i].x - arr[i].y == xx0 - yy0) face = 4;else if (arr[i].x == xx0 && arr[i].y < yy0) face = 5;else if (arr[i].x > xx0 && arr[i].y < yy0 && arr[i].x + arr[i].y == xx0 + yy0) face = 6;else if (arr[i].y == yy0 && arr[i].x > xx0) face = 7;else if (arr[i].x > xx0 && arr[i].y > yy0 && arr[i].x - arr[i].y == xx0 - yy0) face = 8;if (pos[face].size() != 0) continue;pos[face].push_back(arr[i]);}
//    cout << "fff" << endl;for (int i = 1; i <= 8; ++i) {if ((i == 1 || i == 5) && pos[i].size() && (pos[i][0].ch == 'Q' || pos[i][0].ch == 'R')) {printf("YES\n");return;} else if ((i == 2 || i == 6) && pos[i].size() && (pos[i][0].ch == 'Q' || pos[i][0].ch == 'B')) {printf("YES\n");return;} else if ((i == 3 || i == 7) && pos[i].size() && (pos[i][0].ch == 'Q' || pos[i][0].ch == 'R')) {printf("YES\n");return;} else if ((i == 4 || i == 8) && pos[i].size() && (pos[i][0].ch == 'B' || pos[i][0].ch == 'Q')) {printf("YES\n");return;}}printf("NO\n");
}int main() {
#ifdef localfreopen("data.txt","r",stdin);
#endifwork();return 0;
}

View Code

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6068366.html

D. Anton and Chess 模拟题 + 读题相关推荐

  1. Codeforces 659B Qualifying Contest【模拟,读题】

    写这道题题解的目的就是纪念一下半个小时才读懂题...英文一多读一读就溜号... 读题时还时要静下心来... 题目链接: http://codeforces.com/contest/659/proble ...

  2. Kanade Doesn’t Want to Learn CG 模拟,读题训练,临界

    题意 :给一抛物线,再给一板与一篮筐的侧视图(即四个坐标),球碰到板会根据y轴对称变换方向,判断能否从上到下进入篮筐.临界 :碰撞时包括板的两个端点:进篮筐时不包括篮筐的两个端点 思路 :球碰到板变换 ...

  3. GYM MaratonIME plays Chess 模拟

    题目链接 GYM101744D 题解 题意 给出一个棋盘,上面分布着许多棋子,判断能否用自己的任意一个棋子在一步之内吃到指定的对面的棋子. 思路 模拟! 还是有很多可以回味的地方滴. 输入方面 可以看 ...

  4. 重庆社区计算机考试题库,2020重庆社区工作者考试题库:模拟题100题(64)

    2020年重庆社区工作者考试正在如火如荼的开展,为了帮助大家做好备考工作,社区工作者考试模拟题,希望考生们能与小编共同坚持--每日一练! 2020年社区工作者考试模拟题100题64 1. 在市场经济条 ...

  5. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...

    一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...

  6. HDU 2152 选课时间(题目已修改,注意读题) (母函数)

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. HDU-2079 选课时间(题目已修改,注意读题) -母函数

    选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. 使用HttpClient实现跨服务图片下载
  2. 专家观点 | 李德仁:基于云计算的智慧城市运营脑
  3. C# 爬虫:疫情实时信息图
  4. C语言里最基础的关键字
  5. 对象存储 OSS > SDK 示例 > C++ > 数据加密 > 服务器端加密
  6. 驱动中的资源共享和临界代码保护
  7. 《精通javascript》几个简单的函数(二)
  8. 基于深度学习的自动化行人检测和监控系统
  9. 用c语言验证装载问题 回溯法,《算法分析与设计》期末考试复习题纲(完整版)...
  10. ++i i++
  11. 软考中高项学员:2016年4月4日作业
  12. 西南科技大学OJ题 舞伴问题1027
  13. 复旦大学《高等代数学(第三版)》教材习题答案
  14. LAb3-自行车码表
  15. 一种留存分析的方案:Cohort Analysis
  16. 跨境电商的支付方式有哪些?
  17. nios自学笔记三:nios常用外设C函数整理
  18. Unique Snowflakes 详细题解
  19. ORA-00054 错误原因分析
  20. 使用Nightwatch进行端到端测试

热门文章

  1. C#颜色和名称样式对照表【转载】
  2. 深入信号和槽(Signals and Slots in Depth)
  3. MongoDB在不同主机间复制数据库和集合的教程_MongoDB_脚本之家
  4. 算法 --- 翻转二叉树
  5. css --- 弹性盒子
  6. 22 React高阶组件
  7. 自动生成web服务器日志解析规则
  8. 新CIO:Mark Schwartz认为的领先IT
  9. vue封装axios接口
  10. 在思科无线控制器上查看5GHz和2.4GHz的客户端数量