之前一直没有想到该怎么去写 面对1e9的长度束手无策
刚刚听课的时候 反反复复听到区间二字
一个奇妙的想法就出现在我的脑中
既然一棵树只能被拔掉一次 那么我只需要将所有区间合并
设区间 [l[i], r[i]], 那么拔掉的树的颗数即为r[i] - l[i] + 1
对拔掉树的所有区间求和得到拔树的总和为sum 剩下树的棵数即为l - sum + 1

#include <bits/stdc++.h>
using namespace std;
#define pi pair<int, int>
int main ()
{
  ios::sync_with_stdio(0), cin.tie(0);
  vector<pi> a;
  int l, n;cin >> l >> n;
  for (int i = 1;i <= n ;++ i)
  {
    int l, r;cin >> l >> r;
    a.push_back({l, r});
  }
  
  auto merge = [&](vector<pi> &segs) -> void
  {
    vector<pi> res;
    sort(segs.begin(), segs.end());
    
    int st = -2e9, ed = -2e9;
    for (auto i : segs)
    {
      if (ed < i.first)
      {
        if (st != -2e9) res.push_back({st, ed});
        st = i.first, ed = i.second;
      }
      else ed = max(ed, i.second);
    }
    if (st != -2e9) res.push_back({st, ed});
    segs = res;
  };
  
  merge(a);
  int ans = 0;
  for (auto i : a)
  {
    //cout << i.first;
    ans += i.second - i.first + 1;
  }
  cout << l - ans + 1 << '\n';
}