D. Anton and Chess 模拟题 + 读题
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 模拟题 + 读题相关推荐
- Codeforces 659B Qualifying Contest【模拟,读题】
写这道题题解的目的就是纪念一下半个小时才读懂题...英文一多读一读就溜号... 读题时还时要静下心来... 题目链接: http://codeforces.com/contest/659/proble ...
- Kanade Doesn’t Want to Learn CG 模拟,读题训练,临界
题意 :给一抛物线,再给一板与一篮筐的侧视图(即四个坐标),球碰到板会根据y轴对称变换方向,判断能否从上到下进入篮筐.临界 :碰撞时包括板的两个端点:进篮筐时不包括篮筐的两个端点 思路 :球碰到板变换 ...
- GYM MaratonIME plays Chess 模拟
题目链接 GYM101744D 题解 题意 给出一个棋盘,上面分布着许多棋子,判断能否用自己的任意一个棋子在一步之内吃到指定的对面的棋子. 思路 模拟! 还是有很多可以回味的地方滴. 输入方面 可以看 ...
- 重庆社区计算机考试题库,2020重庆社区工作者考试题库:模拟题100题(64)
2020年重庆社区工作者考试正在如火如荼的开展,为了帮助大家做好备考工作,社区工作者考试模拟题,希望考生们能与小编共同坚持--每日一练! 2020年社区工作者考试模拟题100题64 1. 在市场经济条 ...
- java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...
- HDU 2152 选课时间(题目已修改,注意读题) (母函数)
选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU-2079 选课时间(题目已修改,注意读题) -母函数
选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2021年 第12届 蓝桥杯 第3次模拟赛真题详解及小结【Java版】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
最新文章
- 使用HttpClient实现跨服务图片下载
- 专家观点 | 李德仁:基于云计算的智慧城市运营脑
- C# 爬虫:疫情实时信息图
- C语言里最基础的关键字
- 对象存储 OSS > SDK 示例 > C++ > 数据加密 > 服务器端加密
- 驱动中的资源共享和临界代码保护
- 《精通javascript》几个简单的函数(二)
- 基于深度学习的自动化行人检测和监控系统
- 用c语言验证装载问题 回溯法,《算法分析与设计》期末考试复习题纲(完整版)...
- ++i i++
- 软考中高项学员:2016年4月4日作业
- 西南科技大学OJ题 舞伴问题1027
- 复旦大学《高等代数学(第三版)》教材习题答案
- LAb3-自行车码表
- 一种留存分析的方案:Cohort Analysis
- 跨境电商的支付方式有哪些?
- nios自学笔记三:nios常用外设C函数整理
- Unique Snowflakes 详细题解
- ORA-00054 错误原因分析
- 使用Nightwatch进行端到端测试