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的更多相关文章
随机推荐
- PHP程序实现利用rand(1,100)函数产生10个1~100之间的随机数
//echo rand(1,100);$max=0;$min=100;for($i=0;$i<=9;$i++){ $rand[$i]=rand(1,100); if($rand[$i]>$ ...
- Ubuntu启动项设置——之update-rc.d 命令使用
http://blog.csdn.net/typ2004/article/details/38712887 apache2.nginx.redis这些服务安装之后,会随开机启动,当这些服务并不需要时, ...
- STM32库函数实现方法
一.概述 1.调用STM32库函数配置与直接配置寄存器 ① 直接配置寄存器 使用过51单片机的朋友都知道为了将IO口配置成某种特殊功能或者配置中断控制,我们先将需要如下步骤: 根据需要配置功能计算值- ...
- 配置mybatis流程
使用mybatis的优点: 1. 易于上手和掌握. 2. sql写在xml里,便于统一管理和优化. 3. 解除sql与程序代码的耦合. 4. 提供映射标签,支持对象与数据库的orm字段关系映射 5. ...
- iBatis系列之三
iBatis和Hibernate最大差别就是在于iBatis没有严格的和具体的表做关联:而是将结果集和DAO做关联. iBatis的SqlConfig.xml配置一个properties文件,其实可以 ...
- Github readme语法-- markdown
README 该文件用来测试和展示书写README的各种markdown语法.GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Mar ...
- 移动web HTML5使用photoswipe模仿微信朋友圈图片放大浏览
先来几张效果图: 点击其中一张照片可放大,可支持图片文字描述: 同时支持分享功能: 支持手势放大缩小 使用js框架是PhotoSwipe. PhotoSwipe是一个图片放大插件,兼容pc和移动端,经 ...
- C#网页自动登录和提交POST信息的多种方法(转)
网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三 ...
- IOS7,做为开发者,你需要知道的变更
IOS7即将发布,那么我们需要做些什么呢? 升级你的程序Icon至 120*120 更新一张包含状态栏大小的闪屏图片 还有些什么东西呢? IOS7中需要使用更加扁平化的设计,所以BUTTON的图片,边 ...
- DM8168 解码显示模块代码阅读分析
解码/显示概述:从共享文件夹获取H264流,对264流进行解析,生成hdr文件,hdr文件中包含每一帧的信息,将视频帧信息存放在A8核分配的共享内存空间,供其他核或其他的link调用,M3 Video ...