考虑固定右端点,使左端点最小。那么按右端点排序后查询前缀这些区间的左端点第k小即可。然而写了一个treap一个线段树都T飞了,感觉惨爆。事实上可以用堆求第k小,维护一个大根堆保证堆中元素不超过k个即可,瞬间就跑的飞快了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define ll long long
#define N 1000010
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}
int gcd(int n,int m){return m==0?n:gcd(m,n%m);}
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
int n,m,ans,u,v;
struct data
{int l,r,i;bool operator <(const data&a) const{return r<a.r;}
}a[N];
priority_queue<int> q;
void print(int x,int p)
{for (int i=p;i<=n;i++)if (a[i].l<=x) printf("%d ",a[i].i);
}
int main()
{
#ifndef ONLINE_JUDGEfreopen("bzoj5102.in","r",stdin);freopen("bzoj5102.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifn=read(),m=read();for (int i=1;i<=n;i++) a[i].l=read(),a[i].r=read(),a[i].i=i;sort(a+1,a+n+1);for (int i=n;i>=1;i--){q.push(a[i].l);if (n-i+1>=m){int x=q.top();q.pop();if (a[i].r-x>ans) u=x,v=i,ans=a[i].r-x;}}cout<<ans<<endl;print(u,v);return 0;
}

转载于:https://www.cnblogs.com/Gloid/p/10076229.html

BZOJ5102 POI2018Prawnicy(堆)相关推荐

  1. 【BZOJ5102】[POI2018]Prawnicy 堆

    [BZOJ5102][POI2018]Prawnicy Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大 ...

  2. BZOJ5102:[POI2018]Prawnicy(贪心,堆)

    Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大. Input 第一行包含两个正整数n,k(1<= ...

  3. Java堆和栈的基本理解

    Java 堆和栈的区别 参考背景: 堆内存:用来存放由new创建的对象和数组: 栈内存:存放基本类型的变量,对象的引用变量: 堆存放的原因:由于在堆中创建对象(或数组)后,可在栈中定义一个特殊变量,让 ...

  4. 堆叠式传感器架构带来先进的视觉功能

    堆叠式传感器架构带来先进的视觉功能 Stacked sensor architecture brings advanced vision capabilities 巴黎-巴黎Prophesee公司是神 ...

  5. java栈、堆、方法区

    1.java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) ...

  6. 【转】堆栈和托管堆 c#

    原文地址:http://blog.csdn.net/baoxuetianxia/archive/2008/11/04/3218913.aspx 首先堆栈和堆(托管堆)都在进程的虚拟内存中.(在32位处 ...

  7. linux内核和cpu指令集,Linux之父:Intel别浪费时间在AVX512这类指令集、多堆核心才是正道...

    原标题:Linux之父:Intel别浪费时间在AVX512这类指令集.多堆核心才是正道 在最近一次邮件交流中,Linux之父Linus Torvalds对Intel的处理器战略表达意见. 他谈到&qu ...

  8. 大根堆的删除c语言,二叉堆(一)之 C语言详解

    本文介绍二叉堆,二叉堆就是通常我们所说的数据结构"堆"中的一种.和以往一样,本文会先对二叉堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现: ...

  9. C++在堆区创建数组

    new申请数据空间 c++中的new在堆区申请空间的时候的格式是: int * p = new int(10); //该代码的意思就是说在堆区申请的内存赋值为10 //int 后面括号里面写的就是你的 ...

最新文章

  1. Redis的keys命令到底有多慢?
  2. ROC曲线与癌症分类
  3. Rocket 架构设计
  4. [PAL编程规范]SAP HANA PAL双变量几何回归预测分析Bi -Variate Geometric Regression编程规范FORECASTWITHGEOR(预测)...
  5. grunt 打包前端代码
  6. [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS
  7. 斜面孔如何绘制_journal of neuroscience:面孔的神经表征与眼动模式相协调
  8. 适用于WinForm的一个定时器类
  9. mysql 140824,Oracle 12c创建可插拔数据库(PDB)及用户
  10. circle后面是什么意思 python_python小课堂16 - 函数篇
  11. 全国高等学校计算机等级考试(江西考区)一级笔试试卷a,全国高等学校计算机等级考试(江西考区)一级笔试试卷A...
  12. java spring注解_spring注解是如何实现的?
  13. 2021总结和2022展望
  14. java web Excel在网页预览
  15. FOC电机控制之SVPWM原理与实现
  16. xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
  17. 删除主键索引 oracle,删除主键无法删除对应索引问题 drop constraint
  18. static变量和普通变量的区别
  19. SublimeLinter进行PHP代码检查
  20. 本博客搜索,因为csdn的搜索功能不好使,所以使用google做个搜索

热门文章

  1. 计算机硕士工资情况收集
  2. JSP生成验证码源程序
  3. tpp letter
  4. 厉害的壁纸,亲测有效
  5. 怎么在坐标上面找outliner的异常检测方法,非监督学习
  6. 【转】c#中类的默认访问修饰符
  7. flex4.6 保留自动产生的actionscript代码的编译选项
  8. ASP.Net MVC 在ajax接收controller返回值为Json数据
  9. randomaccessfile在移动设备多线程多服务器下载时写入慢的问题
  10. MATLAB无穷大上的反常积分