Restaurant (贪心)
2016-07-21 17:21
169 查看
Restaurant
Time Limit:4000MS Memory Limit:262144KB 64bit IO Format:%I64d
& %I64u
SubmitStatus
Description
A restaurant received n orders for the rental. Each rental order reserve the restaurant for a continuous period of time, the
i-th order is characterized by two time values — the start time
li and the finish time
ri (li ≤ ri).
Restaurant management can accept and reject orders. What is the maximal number of orders the restaurant can accept?
No two accepted orders can intersect, i.e. they can't share even a moment of time. If one order ends in the moment other starts, they can't be accepted both.
Input
The first line contains integer number
n (1 ≤ n ≤ 5·105) — number of orders. The following
n lines contain integer values
li and
ri each (1 ≤ li ≤ ri ≤ 109).
Output
Print the maximal number of orders that can be accepted.
Sample Input
Input
Output
Input
Output
Input
Output
Time Limit:4000MS Memory Limit:262144KB 64bit IO Format:%I64d
& %I64u
SubmitStatus
Description
A restaurant received n orders for the rental. Each rental order reserve the restaurant for a continuous period of time, the
i-th order is characterized by two time values — the start time
li and the finish time
ri (li ≤ ri).
Restaurant management can accept and reject orders. What is the maximal number of orders the restaurant can accept?
No two accepted orders can intersect, i.e. they can't share even a moment of time. If one order ends in the moment other starts, they can't be accepted both.
Input
The first line contains integer number
n (1 ≤ n ≤ 5·105) — number of orders. The following
n lines contain integer values
li and
ri each (1 ≤ li ≤ ri ≤ 109).
Output
Print the maximal number of orders that can be accepted.
Sample Input
Input
2 7 11 4 7
Output
1
Input
5 1 2 2 3 3 4 4 5 5 6
Output
3
Input
6
4 8
1 5
4 7
2 5
1 36 8
Output
2 贪心,注意开数组的范围
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
struct p1{
int Y,X;
}p[500005];
bool cmp(p1 a,p1 b)
{
return a.X<b.X;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&p[i].Y,&p[i].X);
}
sort(p,p+n,cmp);
int ans=1;
int t=p[0].X;
for(int i=1;i<n;i++){
if(p[i].Y>t){
t=p[i].X;
ans++;
}
}
printf("%d\n",ans);
return 0;
}
相关文章推荐
- DOCUMENT对象
- 一个关于 字符与字符串 的 小问题
- [翻译]Speaking SOAP with Android——谈一谈android的soap通信
- 【学习】原生js学习笔记1:添加class和使input为不可用
- 代理模式之静态代理
- tomcat配置文件server.xml详解
- Java基本语法-----java流程控制语句
- Java基本语法-----java流程控制语句
- windows免费文本比较工具winMerge
- BeanUtil 对象转json
- java.lang.IllegalStateException: getWriter() 异常(Filter时)
- jquery.cookie.js操作cookie的使用方法
- ROS学习笔记三:创建ROS软件包
- 证书显示异常No matching provisioning profiles found…
- Linux下函数调用堆栈帧的详细解释
- BootStrap 下拉菜单
- 为项目编写Readme.MD文件
- 推荐几个好玩又有难度的编程网站
- Hive入门--2.分区表 外部分区表 关联查询
- js时间插件——datetimepicker