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的更多相关文章
随机推荐
- CI的面向切面的普通权限验证
第一步:开启CI的钩子配置,此次不多说看CI手册即可. 第二步:在cofig/hooks.php中进行钩子配置,CI手册中有记载 <?php defined('BASEPATH') OR exi ...
- Pyhon编码事项
1. 永远不要使用import * Pylint代码审查:Wildcard import XXX 如果函数名重名,或者要导入的内容里面包含了from datetime import datetime, ...
- 【WPF】布局控件总结
<Canvas>:画布,默认不会自动裁减超出内容,即溢出的内容会显示在Canvas外面,这是因为默认 ClipToBounds="False":可设置ClipToBou ...
- DSP:CCS V6 TMS320F2812 使用printf函数
使用Code Composer Studio Version: 6.1.1.00022,建立TMS320F2812工程. /* * main.c */ #include <stdio.h> ...
- CSS3------background-size(背景图片尺寸属性)
background-size 可以设置背景图片的大小,数值包括 长度length和百分比percentage. 并且会根据背景原点位置 background-origin 设置其图片覆盖的范围.那么 ...
- bzoj 1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 曼哈顿生成树
大致题意:统计平面上由曼哈顿距离小于等于c的点对组成联通块的个数. 曼哈顿生成树的模板题.有关讲解:http://blog.csdn.net/acm_cxlove/article/details/88 ...
- Kaggle Competition Past Solutions
Kaggle Competition Past Solutions We learn more from code, and from great code. Not necessarily alwa ...
- 【HDU 4352】 XHXJ's LIS (数位DP+状态压缩+LIS)
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- [wikioi]没有上司的舞会
树形DP.用F[k][0]和F[k][1]表示某节点不选和选了之后子树的最大值.那么:f[i][0]=sigma(max(f[k][0],f[k][1]))f[i][1]=sigma(f[k][0]) ...
- [wikioi]数的划分
http://wikioi.com/problem/1039/ 划分型DP.最终的思路是,F[i][j]表示i分成j份,如果分出来的有1,那么去掉1,就是F[i-1][j-1]:如果没有1,那就都减1 ...