当前位置: 首页 > news >正文

【晴问算法】入门篇—贪心算法—区间不相交问题

题目描述


给定n个开区间,从中选择尽可能多的开区间,使得这些开区间两两没有交集。

输入描述

输出描述


输出一个整数,表示最多选择的开区间个数。

样例1
输入


4
1 3
2 4
3 5
6 7


输出


3


解释


最多选择(1,3)、(3,5)、(6,7)三个区间,它们互相没有交集。

#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;
}

相关文章:

  • 力扣由浅至深 每日一题.09 找出字符串中第一个匹配项的下标
  • 02分布式搜索引擎ES
  • Java与Go:对象
  • C++ UML类图
  • 开源表单设计器vue-form-design自动化校验实现原理
  • C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。
  • SQLiteC/C++接口详细介绍sqlite3_stmt类(二)
  • 解决Linux中Eclipse启动时找不到Java环境的问题
  • 0基础 三个月掌握C语言(11)
  • C#理解进程、线程和任务
  • Selenium WebDriver 中用于查找网页元素的两个方法
  • 1.通过AD组策略如何做封禁高危端口的策略?AD域控如何给加域的电脑做指定端口号封禁呢?
  • 【Java】POI解析excel
  • 用连续自然数之和来表达整数 - 华为OD统一考试(C卷)
  • nodejs pkg打包跨平台执行文件,带.node插件(sharp、sqlite3)
  • 【SpringCloud微服务实战09】Elasticsearch 搜索引擎
  • 蓝桥杯之动态规划冲刺
  • 【Java与排列组合】某年高考选择题:1,3,5,7,9中选两个,0,2,4,6,8中选两个,组成的无重复四位数有几个?
  • 基于Linux内核的socket编程(TCP)的C语言示例
  • 首页效果炫酷的wordpress免费主题模板
  • 佩斯科夫:俄会考虑30天停火提议,但试图对俄施压无用
  • “行人相撞案”现场视频公布,法院:表述不当造成误导
  • 拿出压箱底作品,北京交响乐团让上海观众享受音乐盛宴
  • 2025年上海市模范集体、劳动模范和先进工作者名单揭晓
  • 中华人民共和国和俄罗斯联邦关于进一步加强合作维护国际法权威的联合声明
  • 秦洪看盘|重估叙事主题卷土重来,给A股注入新活力