#include<iostream>
#include<vector>
#include<algorithm>
using namespace std; int s[]; int main(){
int L, M;
cin >> L >> M;
int l, r;
for(int i = ; i < M; i++){
cin >> l >> r;
s[l] = max(s[l], r - l + );
}
int res = L + ;
int now = ;
for(int i = ; i <= L; i++){
now = max(now, s[i]);
if(now != ){
res--;
now--;
}
} cout << res << endl; return ;
}
数组s标记了从这点开始之后会有多少个树会被挖掉。
举个例子 比如 200 400和300 350需要挖掉
那么在最后一个for循环的时候
到了200,now会变成201
到了300的时候,res已经被剪掉了101了
s[300]小于now,所以不更新,继续减