贪心:火烧赤壁

题目:P1496 火烧赤壁 - 洛谷

注意点1:

记得先a[1]的值初始化,再循环。

易错点2:

如果区间重复,记得更新右端点的值。可能原来的区间的右端点更大,也有可能合并的区间的右端点更大。我们使用一个max,保留最大的那一个。

易错点3:

最后一次循环会直接断掉,我们不要忘记++手动加上++最后一段合并区间的长度!

代码:

cpp 复制代码
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long LL;
const int N = 2e4 + 10;

LL n;

struct node
{
	LL l;
	LL r;
}a[N];

bool cmp(node& x, node& y)
{
	return x.l < y.l;
}

LL ret = 0;

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i].l >> a[i].r;
	
	sort(a+1, a+1+n, cmp);
	
	LL begin = a[1].l;
	LL right = a[1].r;
	
	for (int i = 2; i <= n; i++)
	{
		if (right >= a[i].l) 
		{
			right = max(right, a[i].r);
			continue;
		}	 
		else
		{
			ret += a[i-1].r-begin;
			begin = a[i].l;
			right = a[i].r;
		}
	}
	
	 ret += right - begin; // 加上最后一个合并区间的长度
	
	cout << ret << endl;
	
	return 0;
} 

记得多画图

相关推荐
Emilia486.1 小时前
八大排序算法
算法·排序算法
blammmp2 小时前
算法专题十九:记忆化搜索(暴搜->记忆化搜索)
算法·深度优先·记忆化搜索
纵有疾風起2 小时前
C++—string(1):string类的学习与使用
开发语言·c++·经验分享·学习·开源·1024程序员节
MicroTech20252 小时前
边缘智能的创新:MLGO微算法科技推出基于QoS感知的边缘大模型自适应拆分推理编排技术
科技·算法·ai
王哈哈^_^4 小时前
【数据集】【YOLO】目标检测游泳数据集 4481 张,溺水数据集,YOLO河道、海滩游泳识别算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·分类·视觉检测
巴里巴气4 小时前
第73题 矩阵置零
线性代数·算法·矩阵
voice6705 小时前
密码学实验二
算法·密码学·哈希算法
Blossom.1185 小时前
把AI“编”进草垫:1KB决策树让宠物垫自己报「如厕记录」
java·人工智能·python·算法·决策树·机器学习·宠物
寂静山林6 小时前
UVa 10989 Bomb Divide and Conquer
算法
郭源潮16 小时前
《Muduo网络库:实现TcpServer类终章》
服务器·网络·c++·网络库