一、题目

  Welcome Party

二、分析

  最开始的时候分析错了,认为只要找两个类型中的最小差值就可以了,忽略了是求两个类型中最大值的最小差值。

  那么可以对第一个类型进行从大到小排序,枚举这个类型的最大值,那么,枚举过的这个类型的人就不再选这个类型的值,而是选第二类型。

  考虑对第二个类型处理,枚举过的需要维护一个最大值,对于底下还没枚举的,需要维护一个有序的序列,方便查找,如果还没枚举到的需要找到最接近当前枚举的这个值,用$multiset$维护,二分找时可能找不到,也可能找到后是比这个值小的那个更优,这里要处理一下。

  对于取绝对值,$abs$用于整型,$fabs$用于浮点型,一直WA的原因也是这里。

三、AC代码

 1 #include <bits/stdc++.h>
2
3 using namespace std;
4 #define ll long long
5 #define Min(a,b) ((a)>(b)?(b):(a))
6 #define Max(a,b) ((a)>(b)?(a):(b))
7 #define P pair<int, int>
8 const int MAXN = 1e5 + 13;
9 struct node {
10 ll x, y;
11 bool operator < (const node &t) {
12 return x > t.x;
13 }
14 }A[MAXN];
15
16 int main()
17 {
18 //freopen("input.txt", "r", stdin);
19 // freopen("out.txt", "w", stdout);
20 int T, N;
21 scanf("%d", &T);
22 while(T--) {
23 scanf("%d", &N);
24 multiset<ll> ST;
25 for(int i = 1; i <= N; i++) {
26 scanf("%lld%lld", &A[i].x, &A[i].y);
27 ST.insert(A[i].y);
28 }
29 sort(A + 1, A + 1 + N);
30 ll ans = 2e18;
31 ll ym = -1e18; //记录删掉的y中最大的值
32 for(int i = 1; i <= N; i++) {
33 ST.erase(ST.find(A[i].y));
34 if(ym >= 0) {
35 ans = Min(ans, abs(A[i].x - ym));
36 }
37 if(!ST.empty()) {
38 auto itr = ST.lower_bound(A[i].x);
39 if(itr == ST.end()) {
40 itr--;
41 }
42 ll res = *itr;
43 if(res > ym) {
44 ans = Min(ans, abs(A[i].x - res));
45 }
46 if(itr != ST.begin()) {
47 itr--;
48 res = *itr;
49 if(res > ym) {
50 ans = Min(ans, abs(A[i].x - res));
51 }
52 }
53 }
54 ym = Max(ym, A[i].y);
55 }
56 printf("%lld\n", ans);
57 }
58 return 0;
59 }

HDU_6695 Welcome Party 【思维】的更多相关文章

  1. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  2. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.

  3. CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

    前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...

  4. 计算机程序的思维逻辑 (8) - char的真正含义

    看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本. 本节讨论在Java中进行字符处理的基础 - ...

  5. 计算机程序的思维逻辑 (29) - 剖析String

    上节介绍了单个字符的封装类Character,本节介绍字符串类.字符串操作大概是计算机程序中最常见的操作了,Java中表示字符串的类是String,本节就来详细介绍String. 字符串的基本使用是比 ...

  6. 计算机程序的思维逻辑 (31) - 剖析Arrays

    数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...

  7. 计算机程序的思维逻辑 (33) - Joda-Time

    Joda-Time上节介绍了JDK API中的日期和时间类,我们提到了JDK API的一些不足,并提到,实践中有一个广泛使用的日期和时间类库,Joda-Time,本节我们就来介绍Joda-Time.俗 ...

  8. 计算机程序的思维逻辑 (53) - 剖析Collections - 算法

    之前几节介绍了各种具体容器类和抽象容器类,上节我们提到,Java中有一个类Collections,提供了很多针对容器接口的通用功能,这些功能都是以静态方法的方式提供的. 都有哪些功能呢?大概可以分为两 ...

  9. 成吨提高开发效率:Intellij Shortcuts精简子集与思维模式

    在线精简cheatsheet备查表:intellij.linesh.twGithub项目:intellij-mac-frequent-keymap Intellij的快捷键多而繁杂,从官方推荐的key ...

随机推荐

  1. 使用SignTool对软件安装包进行数字签名(二)--进行数字签名

    四.使用signcode.exe为安装程序.库或cab包签名 1.运行signcode.exe. 2.点击"下一步",选择需要签名的文件(安装程序.库或cab包). 3.点击&qu ...

  2. 网络安全知识--PHP代码审计/Web For Pantesters 的 XSS

    用到 ** WEB FOR Pentester** 注意区分单引号双引号. 常见代码 审计工具 wamp,dwva,zvuldrill,burpsuite,seay源代码审计系统... 1 xss W ...

  3. c++ cin 读入txt的问题

    源程序 #include <iostream> using namespace std; struct Stack { int tos; int stackarray[1000]; }; ...

  4. Linux 创建/编辑/查看 文件/文件夹的命令汇总

    Linux 创建/编辑/查看 文件/文件夹的命令汇总 Linux 创建文件的命令Linux,编辑文件的命令Linux 查看文件的命令,touch,vim,vi,gedit,cat,ls -a, ls ...

  5. macOS & uninstall app

    macOS & uninstall app https://support.apple.com/en-hk/guide/mac-help/install-and-uninstall-other ...

  6. React Hooks & react forwardRef hooks & useReducer

    React Hooks & react forwardref hooks & useReducer react how to call child component method i ...

  7. jquery.query.js

    帮助文档 var url = location.search; > "?action=view&section=info&id=123&debug&te ...

  8. transient的作用及序列化

    1.transient 介绍 Java中的transient关键字,transient是短暂的意思.对于transient 修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略. 因此,trans ...

  9. JDK环境解析,安装和目的

    目录 1. JDK环境解析 1.1 JVM 1.2 JRE 1.3 JDK 2. JDK安装 2.1 为什么使用JDK8 2.1.1 更新 2.1.2 稳定 2.1.3 需求 2.2 安装JDK 2. ...

  10. [转]SIFT,SURF,ORB,FAST 特征提取算法比较

    转载地址:https://blog.csdn.net/vonzhoufz/article/details/46461849 主要的特征检测方法有以下几种,在一般的图像处理库中(如opencv, VLF ...