BZOJ5102 POI2018Prawnicy(堆)
考虑固定右端点,使左端点最小。那么按右端点排序后查询前缀这些区间的左端点第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(堆)相关推荐
- 【BZOJ5102】[POI2018]Prawnicy 堆
[BZOJ5102][POI2018]Prawnicy Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大 ...
- BZOJ5102:[POI2018]Prawnicy(贪心,堆)
Description 定义一个区间(l,r)的长度为r-l,空区间的长度为0. 给定数轴上n个区间,请选择其中恰好k个区间,使得交集的长度最大. Input 第一行包含两个正整数n,k(1<= ...
- Java堆和栈的基本理解
Java 堆和栈的区别 参考背景: 堆内存:用来存放由new创建的对象和数组: 栈内存:存放基本类型的变量,对象的引用变量: 堆存放的原因:由于在堆中创建对象(或数组)后,可在栈中定义一个特殊变量,让 ...
- 堆叠式传感器架构带来先进的视觉功能
堆叠式传感器架构带来先进的视觉功能 Stacked sensor architecture brings advanced vision capabilities 巴黎-巴黎Prophesee公司是神 ...
- java栈、堆、方法区
1.java中的栈(stack)和堆(heap)是java在内存(ram)中存放数据的地方 2.堆区 存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) ...
- 【转】堆栈和托管堆 c#
原文地址:http://blog.csdn.net/baoxuetianxia/archive/2008/11/04/3218913.aspx 首先堆栈和堆(托管堆)都在进程的虚拟内存中.(在32位处 ...
- linux内核和cpu指令集,Linux之父:Intel别浪费时间在AVX512这类指令集、多堆核心才是正道...
原标题:Linux之父:Intel别浪费时间在AVX512这类指令集.多堆核心才是正道 在最近一次邮件交流中,Linux之父Linus Torvalds对Intel的处理器战略表达意见. 他谈到&qu ...
- 大根堆的删除c语言,二叉堆(一)之 C语言详解
本文介绍二叉堆,二叉堆就是通常我们所说的数据结构"堆"中的一种.和以往一样,本文会先对二叉堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现: ...
- C++在堆区创建数组
new申请数据空间 c++中的new在堆区申请空间的时候的格式是: int * p = new int(10); //该代码的意思就是说在堆区申请的内存赋值为10 //int 后面括号里面写的就是你的 ...
最新文章
- Redis的keys命令到底有多慢?
- ROC曲线与癌症分类
- Rocket 架构设计
- [PAL编程规范]SAP HANA PAL双变量几何回归预测分析Bi -Variate Geometric Regression编程规范FORECASTWITHGEOR(预测)...
- grunt 打包前端代码
- [LeetCode] 102. Binary Tree Level Order Traversal_Medium tag: BFS
- 斜面孔如何绘制_journal of neuroscience:面孔的神经表征与眼动模式相协调
- 适用于WinForm的一个定时器类
- mysql 140824,Oracle 12c创建可插拔数据库(PDB)及用户
- circle后面是什么意思 python_python小课堂16 - 函数篇
- 全国高等学校计算机等级考试(江西考区)一级笔试试卷a,全国高等学校计算机等级考试(江西考区)一级笔试试卷A...
- java spring注解_spring注解是如何实现的?
- 2021总结和2022展望
- java web Excel在网页预览
- FOC电机控制之SVPWM原理与实现
- xp系统打开itunes显示服务器失败,windowsxp系统安装不了itunes的两种解决方法
- 删除主键索引 oracle,删除主键无法删除对应索引问题 drop constraint
- static变量和普通变量的区别
- SublimeLinter进行PHP代码检查
- 本博客搜索,因为csdn的搜索功能不好使,所以使用google做个搜索