51nod 1428 活动安排问题 贪心
来源:互联网 发布:mac装win7镜像下载 编辑:程序博客网 时间:2024/05/06 05:49
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?
Input
第一行一个正整数n (n <= 10000)代表活动的个数。第二行到第(n + 1)行包含n个开始时间和结束时间。开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
Output
一行包含一个整数表示最少教室的个数。
Input示例
31 23 42 9
Output示例
2
曹鹏 (题目提供者)
C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里
贪心算法,需要用到优先队列。
priority_queue<int ,vector<int >,greater<int> >s;
先输出小的。
我们用它保存y值。首先先把第一个活动的y值放入。
之后进入for循环,如果当前的开始时间小于队列中第一个(也就是最早结束的时间),那么我们只能重新开一个教室,并把当前的结束时间放入队列当中。 如果大于等于,那就把那个拿走,那当前的放入。
可以说就是不停地和已有的教室的结束时间作比较。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
struct node
{
long long x;
long long y;
}a[100001];
priority_queue<int ,vector<int >,greater<int> >s;
bool cmp(node t1,node t2)
{
return t1.x<t2.x;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+1+n,cmp);
int ans=1;
s.push(a[1].y);
for(int i=2;i<=n;i++)
{
int t=s.top();
if(a[i].x>=t)
{
s.pop();
s.push(a[i].y);
}
else
{
ans++;
s.push(a[i].y);
}
}
cout<<ans<<endl;
return 0;
}
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
struct node
{
long long x;
long long y;
}a[100001];
priority_queue<int ,vector<int >,greater<int> >s;
bool cmp(node t1,node t2)
{
return t1.x<t2.x;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+1+n,cmp);
int ans=1;
s.push(a[1].y);
for(int i=2;i<=n;i++)
{
int t=s.top();
if(a[i].x>=t)
{
s.pop();
s.push(a[i].y);
}
else
{
ans++;
s.push(a[i].y);
}
}
cout<<ans<<endl;
return 0;
}
阅读全文
0 0
- 51Nod 1428 活动安排问题 (贪心
- 51nod 1428 活动安排问题(贪心)
- 51nod 1428 活动安排问题 贪心
- 51nod 活动安排问题 (贪心)
- 51nod 活动安排问题 《贪心+dp》
- 51Nod 活动安排问题(贪心)
- 51nod 1428 活动安排问题 优先队列+贪心
- 51nod 1428 活动安排问题(贪心)
- 贪心+优先队列-51nod-1428 活动安排问题
- 【51Nod】1428 - 活动安排问题(贪心 || 思维)
- 51Nod 1428 活动安排问题 贪心+优先队列
- 51Nod 1428 活动安排问题 贪心+优先队列
- 51nod 活动安排问题之二 (贪心+stl)
- 51nod贪心例子活动安排问题二
- 51Nod 活动安排问题之二(贪心)
- 51nod 贪心入门之二 活动安排问题
- 51nod 贪心入门之三 活动安排问题二
- 51nod 1428 活动安排问题
- 11.7考试爆炸记
- Android --- 广播机制(BroadcastReceiver应用)
- BAT三大云双11大促销,你怎么看?
- android自定义控件的学习
- 读《深入理解C语言指针》第三章
- 51nod 1428 活动安排问题 贪心
- java集合框架的练习之Map集合以及其内部接口Entry的应用
- PTA练习题、重要的是说三遍
- A. Alex and broken contest
- 简单三步获取微信公众号用户授权
- 如何伪造一封合格的钓鱼邮件
- html5 右下角弹出 广告框
- ORACLE的SPFILE与PFILE
- windows adb不识别(VID PID更改)