波老师(teacher/1S/64M)
【题目描述】
波波老师是一个地理老师。有一天他上课的时候,他在地图上标记了N个点,第i个点在点(Xi,Yi)。他想知道,是否存在四个点(A,B,C,D)(A<B,C<D,A≠C或者B≠D),使AB之间的曼哈顿距离和CD之间的曼哈顿距离相等。
如果存在这样的四个点,输出YES,否则输出NO。
【输入格式】
输入文件第一行是一个T(T≤50),表示有T组数据。
接下来有T组数据,每组数据第一行是两个整数N,M,表示点的个数以及点的坐标的边界,然后有N行,第i行有两个整数Xi,Yi表示第i个点的坐标(Xi,Yi)(0≤Xi,Yi≤M)
【输出格式】
输出文件有T行,每一行为YES或者NO。
【输入】
2
3 10
1 1
2 2
3 3
4 10
8 8
2 3
3 3
4 4
【输出】
YES
NO
80%的数据,n<=1000,m<=100000
100的数据,n<=100000,m<=100000
===========================================================
首先我们要知道,所谓的曼哈顿距离,其实就是dis(I,j)=|xi-xj|+|yi-yj|。Lpq神犇因为不知道曼哈顿距离而计算了直线距离,无奈爆零了。
这题虽然数据规模n<=10^5,但却可以用暴力ac。究竟是为什么呢?
仔细读题,我们可以从m的范围入手。因为m的范围最多只有10^5,那么曼哈顿距离最多只有2*10^5,可以用计数排序统计是否出现过。
这样,我们就可以只枚举两个点,计算它们的曼哈顿距离并标记起来。如果发现当前两个点的曼哈顿距离已经被标记过,那么就可以直接输出yes并退出。
但是显然有个问题,n<=10^5,枚举两个点可能会达到10^10的复杂度(不过实际上并没有达到这个复杂度)。假如没有任意两个点的曼哈顿距离相同,不是会TLE吗?
然而,根据鸽巢原理可知,这n*(n-1)/2对点会产生n*(n-1)/2种曼哈顿距离,而且因为它大于2*10^5,所以一定会产生重复!在最坏情况下,前2*10^5种距离都互不相同,下一对点的距离就必定属于前面这些出现过的距离中的一种。
因此,本算法的复杂度应该是min(n^2,2*10^5),不超时。
这也正应了我们oiers最喜欢的那句话:暴力出奇迹。
不过在考试的时候我并没有想这么多,只考虑能拿到80%的分,因此数组也只开了10^3,导致剩下两组数据RE了。数组开小了是非常白痴的错误,也十分的令人痛心。以后一定要杜绝这种错误。
另外,事实上,当n充分大时,必然会有满足题意条件的点对存在,这时可以不必枚举,直接输出yes。(但我不会证明)
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream> using namespace std; const int maxn = 1e5 + 9;const int maxm = 1e5 + 9; struct Tnode { int X, Y; Tnode() { X = Y = 0; }} points[maxn]; int t;bool f[maxm << 1]; //f[i]表示是否出现过一对点的曼哈顿距离为i int main() { ios::sync_with_stdio(false); freopen("teacher.in", "r", stdin); freopen("teacher.out" , "w", stdout); cin >> t; while(t--) { memset(f, false , sizeof f); int n, m; cin >> n >> m; for(int i = 0; i < n; i++) cin >> points[i].X >> points[i].Y; bool isok = false; //是否找到了四个点满足题意要求 for(int i = 0; i + 1 < n && !isok; i++) //枚举两个点 for(int j = i + 1; j < n && !isok; j++) { int dis = abs(points[i].X - points[j].X) + abs(points[i].Y - points[j].Y); //计算它们的曼哈顿距离 if(f[dis]) { //如果曾经出现过相同的 cout << "YES" << endl; isok = true; //停止寻找 } f[dis] = true; //标记这个距离出现过 } if(!isok) cout << "NO" << endl; //找遍了也没有相同的 } return 0;}
波老师(teacher/1S/64M)相关推荐
- 波老师(teacher)
波老师(teacher/1S/64M) [题目描述] 波波老师是一个地理老师.有一天他上课的时候,他在地图上标记了N个点,第i个点在点(Xi,Yi).他想知道,是否存在四个点(A,B,C,D)(A&l ...
- 科研实习 | 北京大学计算机系林亦波老师芯片设计软件组招收实习生
合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 北京大学 课题组活跃于当今"卡脖子"的芯片设计自动化( ...
- xdoj系统_【战疫情】西电计科院教学在行动(6)——对话全面线上服务的万波老师...
(通讯员 王孟晞 薛科)线上教学是疫情期间的特殊需要,更是我们进行信息化.智能化教学建设的需要.即使没有这次疫情,计科院也在着手进行"人工智能+教育","互联网+教育&q ...
- 嘟嘟说晓波:CSDN学院的晓波老师是何许人也!
拥有1258名Unity粉丝的晓波老师是何许人也!说来话长,但是嘟嘟不打算长话短说,那么接下来就有请嘟嘟(一个胖子)为大家从头到尾来介绍一下晓波老师! 如果说要介绍蓝鸥的晓波老师,有三个方面嘟嘟是必须 ...
- 【重磅推荐: 强化学习课程】清华大学李升波老师《强化学习与控制》
深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL <强化学习与控制> ...
- 读阿里许令波老师晋升评审有感
看到许老师在朋友圈发的给P7评审当评委的总结,虽然我不是阿里的也是有所感触. 简单列一下: 1 .所做事情有成果或者可预期的结果. 我理解就是有产出,尤其是对于部门或者公司有重要作用的项目. 2.对于 ...
- 荣幸成为了设计模式之禅的试读员--致谢秦小波老师
今天闲逛 发现荣幸成为了 设计模式之禅的试读员. 本就是凑个热闹,上帝垂青,幸福降临 高兴之余 倍感责任 上对作者下对读者中对良心 但愿也能 铁肩担道义 妙手著文章 了 做程序员这么久 GOF却不敢说 ...
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第8章-Agent 技术在机器人智能控制系统的应用
第7章 回到目录 无 第8章-Agent 技术在机器人智能控制系统的应用 8.1 引言 8.2 智能机器人系统应用研究 8.2.1 概况 8.2.2 传统研究方法的缺陷 8.2.3 智能机器人系统的共 ...
- 【控制】《多智能体机器人系统信息融合与协调》范波老师-第7章-基于 Markov 对策的多 Agent 协调
第6章 回到目录 第8章 第7章-基于 Markov 对策的多 Agent 协调 7.1 引言 7.2 多 Agent 交互的协调与博弈分析 7.2.1 多 Agent 协调与博弈的性质 7.2.2 ...
最新文章
- R密度聚类之DBSCAN模型
- ITK VTK CTK QT 跨平台联合开发之 一
- Oracle Events事件
- 【知识发现】基于用户的协同过滤推荐算法python实现
- 【来龙去脉系列】.net分布式系统架构的思路
- vue3绑定多个事件
- Conda solving environment一晚上还不能完成有解吗?
- VMware 虚拟机扩展Ubuntu系统磁盘空间
- Linux系统磁盘阵列创建教程----------(better late than never. 只要开始,虽晚不迟。)...
- UIPickerView用法(左右比例,整体大小,字体大小)
- html原生控件美化,HTML表单美化
- 人机工程学的50条原则
- android 驱动移植方法
- 对数周期天线hfss建模_07 HFSS软件二次开发在对数周期天线设计中的应用
- linux php muma,php实现Linux服务器木马排查及加固功能
- bzoj 4238: 电压 dfs树
- Linux 简要大纲
- 高通 MSM8K GPT异常导致无法开机问题分析
- 跨页面清除Cookie信息
- 魔法宝石(邻接表+dfs更新)
热门文章
- python 破解WinRAR,zip文件密码
- 用户反馈信息textbox填充数据表,页面使用gridview显示反馈意见
- 哈工大计算机学院2020复试分数线,2020考研分数线:哈尔滨工业大学2020年复试基本分数线公布!...
- OpenWhisk feeds的模式和实现
- mybatis解析-association实现原理详解
- 7-18 出租车计价
- python中float什么意思_在python中 float是什么意思?
- 格子玻尔兹曼方法(LBM)的学习笔记1(附Couette流源代码及解析)
- Android上使用Vector 矢量图片
- TrafficMonitor——简洁实用的网速/cpu/内存监控器