nyoj891找点
2016-02-12 00:02
351 查看
#include<stdio.h>
#include<algorithm>
using namespace std;
struct ch{
int s,e;
}a[101];
bool cmp(struct ch a,struct ch b)
{
if(a.e != b.e) return a.e > b.e;
else return a.s > b.s;
}
int main()
{
int n,i;
while(scanf("%d",&n) != EOF)
{
for(i = 0;i < n;i++)
{
scanf("%d %d",&a[i].s,&a[i].e);
}
sort(a,a+n,cmp);
int l = 0,r = 101,point = 1;
for(i = 0;i < n;i++)
{
if(r >= a[i].e && l <= a[i].e)
{
r = a[i].e;
if(l < a[i].s) l = a[i].s;
}
else
{
point++;
r = a[i].e;
l = a[i].s;
}
}
printf("%d\n",point);
}
return 0;
}
思路:将输入的n个数组先有区间从大到小排序然后有区间若是相等就左区间从大到小排序。然后,每次区间比较的时候去交集然后在进行比较。
#include<algorithm>
using namespace std;
struct ch{
int s,e;
}a[101];
bool cmp(struct ch a,struct ch b)
{
if(a.e != b.e) return a.e > b.e;
else return a.s > b.s;
}
int main()
{
int n,i;
while(scanf("%d",&n) != EOF)
{
for(i = 0;i < n;i++)
{
scanf("%d %d",&a[i].s,&a[i].e);
}
sort(a,a+n,cmp);
int l = 0,r = 101,point = 1;
for(i = 0;i < n;i++)
{
if(r >= a[i].e && l <= a[i].e)
{
r = a[i].e;
if(l < a[i].s) l = a[i].s;
}
else
{
point++;
r = a[i].e;
l = a[i].s;
}
}
printf("%d\n",point);
}
return 0;
}
思路:将输入的n个数组先有区间从大到小排序然后有区间若是相等就左区间从大到小排序。然后,每次区间比较的时候去交集然后在进行比较。
相关文章推荐
- python黑魔法之参数传递
- 常用python编程模板汇总
- 一步步解析Python斗牛游戏的概率
- 理解Python垃圾回收机制
- 教大家使用Python SqlAlchemy
- PHP共享内存用法实例分析
- c语言:break和continue的区别,编程举例说明
- PHP消息队列用法实例分析
- PHP信号量基本用法实例详解
- JavaScript判断表单为空及获取焦点的方法
- JavaScript实现弹出模态窗体并接受传值的方法
- JavaScript实现点击单元格改变背景色的方法
- 原生javascript实现图片无缝滚动效果
- 原生javascript实现自动更新的时间日期
- jquery实现具有嵌套功能的选项卡
- js随机生成26个大小写字母
- 华为、小米和联想把苹果拉下马?短期内不可能!
- 机器人快速崛起:5年内消失510万工作岗位
- 如何避免让设计评审会变成撕逼大会?
- yii_1_1_17_8(模型规则与标签设置开启前台验证-2016-2-11)