洛谷 P1047 校门外的树

#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,所以不更新,继续减

上一篇:617. Merge Two Binary Trees(Easy)


下一篇:Spring Boot静态资源处理