cf754D
题意:给你一个数m,有多少优惠券,给个n,主角想用多少优惠券。然后接下来时m行,每行两个数,那张优惠券的优惠区间a,b(在a号货物到b号货物之间的所有都可以优惠)
问你,能不能用k张优惠券,是他的优惠区间重叠的部分最大。
今天第一次看优先队列,居然还有这么神奇的东西,omg,太强了
思路就是排序,然后用优先队列乱搞一下。。。
接下来给出代码
#include <iostream>
#include <queue>
#include <algorithm>
#include <stdio.h>
using namespace std;
const int Maxn = 2147483647;
struct Node{
int l,r;
int i;
}node[300010];
bool cmp( const Node &a,const Node &b ){
return ( a.l == b.l ? a.r < b.r:a.l < b.l );
}
int main(){
int m,n;
scanf("%d%d",&m,&n);
for( int i = 1; i <= m; i++ ){
scanf("%d%d",&node[i].l,&node[i].r);
node[i].i = i;
}
sort( node+1,node+1+m,cmp );
priority_queue<int,vector<int>,greater<int> > q;
int inf = -Maxn;
int x;
int l,r;
for( int i = 1; i <= m; i++ ){
x = node[i].l;
q.push( node[i].r );
while( q.top() < x || q.size() > n ){
q.pop();
}
if( q.size() == n ){
if( inf < q.top() - x + 1 ){
inf = q.top() - x + 1;
l = x,r = q.top();
}
}
}
if( inf == - Maxn ){
cout << '0' << endl;
for( int i = 1; i <= n; i++ ){
printf( "%d ",i );
}
printf( "\n" );
exit(0);
}else{
cout << inf << endl;
for( int i = 1; i <= m; i++ ){
if( node[i].l <= l && node[i].r >= r ){
printf("%d ",node[i].i);
n--;
if( n == 0 ){
cout << '\n';
exit(0);
}
}
}
}
}
cf754D的更多相关文章
随机推荐
- spring mvc 和mybatis整合 的异常处理
1.自定义异常信息类 通过构造函数来实现异常信息的接收 public class CustomException extends Exception { //异常信息 private String m ...
- HTML实体
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- osg(OpenSceneGraph)学习笔记1:智能指针osg::ref_ptr<>
OSG的智能指针,osg::ref_ptr<> osg::Referenced类管理引用计数内存块,osg::ref_ptr需要使用以它为基类的其它类作为模板参数. osg::ref_pt ...
- 格式化分区,报/dev/sdb1 is apparently in use by the system; will not make a filesystem here!
[root@RAC2 ~]# mke2fs /dev/sdb1mke2fs 1.39 (29-May-2006)/dev/sdb1 is apparently in use by the system ...
- asp.net mvc将html编译
从数据库查询出来的值,如果包含html标签并且通过MVC绑定页面的话,那么他会通过浏览器编译为字符串显示,所以我们有得在从新的转一次: HtmlString hh = new HtmlString(M ...
- Java基础类型自动装箱(autoboxing)
Java SE 1.5 版本及之后,开始提供自动装箱功能. 自动装箱,将基础类型“包装”成一种类型: 基本类型 --> 包装器类 如下过程可触发自动装箱过程: Integer count = ...
- nutch http file 截断问题
问题: 列表页预计抽取 355+6 但实际只抽取到220条链接. 原因是nutch对http下载的内容的长度进行了限制. 解决方案:这里将这个属性扩大10倍. vim conf/nutch-defal ...
- ThinkPHP3.1快速入门(3)查询语言
http://www.thinkphp.cn/info/115.html 介绍 ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到 ...
- iOS开发控制器之间传值的几种小方法
在IOS开发中或面试中,经常会遇到,两个或者多个控制器之间传值的问题 ,总结的集中方法仅供参考! 问题 :将B控制器中的textField 输入内容,传到A控制器中的label上显示出来,如何传值? ...
- 李洪强漫谈iOS开发[C语言-028]-逗号表达式