【晴问算法】入门篇—贪心算法—区间选点问题

题目描述

给定n个闭区间,问最少需要确定多少个点,才能使每个闭区间中都至少存在一个点。

输入描述

输出描述

输出一个整数,表示最少需要确定的点的个数。

样例1
输入

3

1 4

2 6

5 7
输出

2

解释

至少需要两个点(例如3和5)才能保证每个闭区间内都有至少一个点。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
int a[MAXN];
struct qj{
	int x;//左端点
	int y;//右端点
};//定义区间结构体,依次输入区间的左右端点
bool cmp(qj a, qj b){//qj类型的a和b
	return a.y < b.y;//返回右端点较小的区间
}
int main(){
	struct qj a[MAXN];
	int n;
	cin >> n;
	for(int i=0;i<n;i++){
		scanf("%d %d",&a[i].x,&a[i].y);
	}
	sort(a,a+n,cmp);//按照右端点小的顺序
	int last = a[0].y;//第一个区间的左端点
	int count = 1;//第一个区间一定能被选中
	for(int i=1;i<n;i++){//从第二个区间开始判断
		if(a[i].x > last){//如果当前区间的左端点大于上一个区间的右端点
			count++;//则不会交集,个数加1
			last = a[i].y;//更新当前的右端点
		}
	}
	printf("%d",count);
	
	
	
	return 0;
}
相关推荐
晚风吹长发18 小时前
初步了解Linux中的信号保存和简单使用
linux·运维·服务器·数据结构·后端·算法
AndrewHZ18 小时前
【图像处理与ISP技术】图像格式与存储原理
图像处理·算法·isp·图像压缩·图像格式·图像存储·图像信号处理
仰泳的熊猫18 小时前
题目1431:蓝桥杯2014年第五届真题-分糖果
数据结构·c++·算法·蓝桥杯
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.18 小时前
Haproxy负载均衡算法全解析
算法
永远都不秃头的程序员(互关)20 小时前
【决策树深度探索(四)】揭秘“混乱”:香农熵与信息纯度的量化之旅
算法·决策树·机器学习
永远都不秃头的程序员(互关)20 小时前
【决策树深度探索(三)】树的骨架:节点、分支与叶子,构建你的第一个分类器!
算法·决策树·机器学习
Σίσυφος190020 小时前
OpenCV - SVM算法
人工智能·opencv·算法
清酒难咽1 天前
算法案例之递归
c++·经验分享·算法
让我上个超影吧1 天前
【力扣26&80】删除有序数组中的重复项
算法·leetcode
张张努力变强1 天前
C++ Date日期类的设计与实现全解析
java·开发语言·c++·算法