CSU 1685-Entertainment Box(set+二分)
2016-03-13 14:37
435 查看
E - Entertainment BoxTime Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld& %lluSubmit Status Practice CSU1685DescriptionInputOutputSample Input
3 1 1 2 2 3 2 3 4 1 1 3 4 6 7 8 2 5Sample Output
2 3
AC代码:
#include<iostream>#include<functional>#include<algorithm>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<set>using namespace std;typedef long long ll;typedef unsigned long long ull;#define T 100000 + 50struct node{ll L,R;bool operator<(const node& b)const{return R<b.R;}}a[T];struct line{ll val;line():val(0){}line(ll _2):val(_2){}bool operator<(const line& b)const{return val>b.val;}};ll v[T];bool cmp(const ll& a,const ll& b){return a>b;}int main(){#ifdef zscfreopen("input.txt","r",stdin);#endifint n,m,i,j;while(~scanf("%d%d",&n,&m)){ll c = 0;ll sum = 0;for(i=0;i<n;++i){scanf("%lld%lld",&a[i].L,&a[i].R);}if(m>=n){printf("%d\n",n);continue;}sort(a,a+n);fill(v,v+T,0);multiset< ll,greater<int> > Q;multiset< ll,greater<int> >::iterator it;ll k;Q.insert(a[0].R);c = 1;int cnt = 1;for(i=1;i<n;++i){it = Q.begin();k = *it;it = Q.lower_bound(a[i].L);if(it==Q.end()&&cnt<m){c ++;cnt++;Q.insert(a[i].R);}else if(it!=Q.end()&&cnt<=m){c++;Q.erase(it);Q.insert(a[i].R);}}Q.clear();printf("%lld\n",c);}return 0;}
相关文章推荐
- set 命令特殊用法
- You must SET PASSWORD before executing this statement的解决方法
- 批处理 Set 命令详解 让你理解set命令第1/2页
- ASP中set与dim的区别(自己的理解)
- 深入C#中get与set的详解
- sql Set IDENTITY_INSERT的用法
- set_include_path在win和linux下的区别
- jquery中常用的SET和GET
- 大家注意vector, list, set, map成员函数erase
- 基于SQL中SET与SELECT赋值的区别详解
- mysql之set与enum的介绍
- php set_magic_quotes_runtime() 函数过时解决方法
- MySQL的FIND_IN_SET函数使用方法分享
- .net get set用法小结第1/3页
- mysqli_set_charset和SET NAMES使用抉择及优劣分析
- asp.net get set用法第1/2页
- Java集合类中文介绍
- Mysql中的find_in_set的使用方法介绍
- PHP使用方法重载实现动态创建属性的get和set方法
- 网络之美 JavaScript中Get和Set访问器的实现代码