Files
python/TangDou/CSP-J/AcWingTraining/T1/422_MergeRange.cpp

34 lines
987 B
C++
Raw Normal View History

2025-08-30 18:35:01 +08:00
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
const int N = 110;
int M, L;
PII seg[N];
int main() {
cin >> L >> M;
for (int i = 0; i < M; i++)
cin >> seg[i].first >> seg[i].second;
sort(seg, seg + M); // 按左端点由小到大排序
int res = L + 1;
int st = seg[0].first, ed = seg[0].second; // 第一个区间
for (int i = 1; i < M; i++) // 后面的M-1个区间
if (seg[i].first <= ed) // 两个区间有交集
ed = max(seg[i].second, ed); // 合并区间
else {
res -= ed - st + 1; // 独立的两个区间,开始计算去掉的区间长度
st = seg[i].first, ed = seg[i].second; // 更新前一个区间的开始与结束,方便下次计算
}
// 对于最后一个区间而言,它还没有被计算,需要单独计算
res -= ed - st + 1;
// 输出结果
cout << res << endl;
return 0;
}