ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

值周 (区间合并 差分

2022-01-20 21:33:08  阅读:133  来源: 互联网

标签:pii arr int 合并 差分 端点 区间 值周 first


添加链接描述

区间合并 首先按区间将按左端点从小到大排序
然后标记第一个区间左右端点为a和b
然后从第二个区间遍历 如果当前区间左端点小于等于a 说明包含在a到b中间 则判断是否需要扩大b 取max
如果当前区间左端点大于a 说明区间不包含 减去当前a到b的所有点 要+1
记录当前a和b为左右端点

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+9;
typedef pair<int ,int> pii;
pii arr[N];
bool cmp(pii a,pii b){
	return a.first<b.first;
}
int main(){
	
	int L,n;
	cin>>L>>n;
	for(int i=1;i<=n;i++){
		int a,b;
		cin>>a>>b;
		arr[i]={a,b};
	}
	sort(arr+1,arr+n+1,cmp);
	int res=L+1;
	int a=arr[1].first,b=arr[1].second;
	for(int i=2;i<=n;i++){
		if(arr[i].first<=b){
			b=max(b,arr[i].second);
		}
		else {
			res-=(b-a+1);
			a=arr[i].first;
			b=arr[i].second;
		}
	}
	res-=(b-a+1);
	cout<<res<<endl;
	return 0;
}

标签:pii,arr,int,合并,差分,端点,区间,值周,first
来源: https://blog.csdn.net/Minelois/article/details/122610409

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有