【题目描述】

波波老师是一个地理老师。有一天他上课的时候,他在地图上标记了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)相关推荐

  1. 波老师(teacher)

    波老师(teacher/1S/64M) [题目描述] 波波老师是一个地理老师.有一天他上课的时候,他在地图上标记了N个点,第i个点在点(Xi,Yi).他想知道,是否存在四个点(A,B,C,D)(A&l ...

  2. 科研实习 | 北京大学计算机系林亦波老师芯片设计软件组招收实习生

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 北京大学 课题组活跃于当今"卡脖子"的芯片设计自动化( ...

  3. xdoj系统_【战疫情】西电计科院教学在行动(6)——对话全面线上服务的万波老师...

    (通讯员 王孟晞 薛科)线上教学是疫情期间的特殊需要,更是我们进行信息化.智能化教学建设的需要.即使没有这次疫情,计科院也在着手进行"人工智能+教育","互联网+教育&q ...

  4. 嘟嘟说晓波:CSDN学院的晓波老师是何许人也!

    拥有1258名Unity粉丝的晓波老师是何许人也!说来话长,但是嘟嘟不打算长话短说,那么接下来就有请嘟嘟(一个胖子)为大家从头到尾来介绍一下晓波老师! 如果说要介绍蓝鸥的晓波老师,有三个方面嘟嘟是必须 ...

  5. 【重磅推荐: 强化学习课程】清华大学李升波老师《强化学习与控制》

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL <强化学习与控制> ...

  6. 读阿里许令波老师晋升评审有感

    看到许老师在朋友圈发的给P7评审当评委的总结,虽然我不是阿里的也是有所感触. 简单列一下: 1 .所做事情有成果或者可预期的结果. 我理解就是有产出,尤其是对于部门或者公司有重要作用的项目. 2.对于 ...

  7. 荣幸成为了设计模式之禅的试读员--致谢秦小波老师

    今天闲逛 发现荣幸成为了 设计模式之禅的试读员. 本就是凑个热闹,上帝垂青,幸福降临 高兴之余 倍感责任 上对作者下对读者中对良心 但愿也能 铁肩担道义 妙手著文章 了 做程序员这么久 GOF却不敢说 ...

  8. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第8章-Agent 技术在机器人智能控制系统的应用

    第7章 回到目录 无 第8章-Agent 技术在机器人智能控制系统的应用 8.1 引言 8.2 智能机器人系统应用研究 8.2.1 概况 8.2.2 传统研究方法的缺陷 8.2.3 智能机器人系统的共 ...

  9. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第7章-基于 Markov 对策的多 Agent 协调

    第6章 回到目录 第8章 第7章-基于 Markov 对策的多 Agent 协调 7.1 引言 7.2 多 Agent 交互的协调与博弈分析 7.2.1 多 Agent 协调与博弈的性质 7.2.2 ...

最新文章

  1. R密度聚类之DBSCAN模型
  2. ITK VTK CTK QT 跨平台联合开发之 一
  3. Oracle Events事件
  4. 【知识发现】基于用户的协同过滤推荐算法python实现
  5. 【来龙去脉系列】.net分布式系统架构的思路
  6. vue3绑定多个事件
  7. Conda solving environment一晚上还不能完成有解吗?
  8. VMware 虚拟机扩展Ubuntu系统磁盘空间
  9. Linux系统磁盘阵列创建教程----------(better late than never. 只要开始,虽晚不迟。)...
  10. UIPickerView用法(左右比例,整体大小,字体大小)
  11. html原生控件美化,HTML表单美化
  12. 人机工程学的50条原则
  13. android 驱动移植方法
  14. 对数周期天线hfss建模_07 HFSS软件二次开发在对数周期天线设计中的应用
  15. linux php muma,php实现Linux服务器木马排查及加固功能
  16. bzoj 4238: 电压 dfs树
  17. Linux 简要大纲
  18. 高通 MSM8K GPT异常导致无法开机问题分析
  19. 跨页面清除Cookie信息
  20. 魔法宝石(邻接表+dfs更新)

热门文章

  1. python 破解WinRAR,zip文件密码
  2. 用户反馈信息textbox填充数据表,页面使用gridview显示反馈意见
  3. 哈工大计算机学院2020复试分数线,2020考研分数线:哈尔滨工业大学2020年复试基本分数线公布!...
  4. OpenWhisk feeds的模式和实现
  5. mybatis解析-association实现原理详解
  6. 7-18 出租车计价
  7. python中float什么意思_在python中 float是什么意思?
  8. 格子玻尔兹曼方法(LBM)的学习笔记1(附Couette流源代码及解析)
  9. Android上使用Vector 矢量图片
  10. TrafficMonitor——简洁实用的网速/cpu/内存监控器