思路
不同于校门外的树 ,这一题要用到差分数组优化(这一部分内容可以看acwing基础模板)
可以先尝试构造差分数组, 然后再还原回来
考虑到可能多次取重叠的区间, 最后还原的时候, 需要找到原来那些不被破坏的点,进行统计
ac代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int main()
{
int L, M;
cin >> L >> M;
vector<int> a(L + 1, 0); // [0 ,L]
a[0] = 1; // s0 也是 1
while (M--)
{
int l, r;
cin >> l >> r;
a[l] += 1, a[r + 1] -= 1;
}
long long cnt = 0, ans = 0;
for (int i = 0; i <= L; i++)
{
cnt += a[i];
if (cnt == 1)
ans++; // 原来数组上应该都是 1 统计这部分人即可
}
cout << ans;
return 0;
}