传送门
本题就是一道模拟题,将每一步模拟一遍,为了避免重复,可以用一个一维数组flag来模拟是否被覆盖(true就是已被覆盖):
for(int o=u;o<=v;o++){
flag[o]=1;
}
同样的,false就是此处还存在着树,最后用一个变量统计一下false的个数就好了:
int ans=0;
for(int i=0;i<=l;i++){
if(flag[i]==0)ans++;
}
所以完整代码如下:
#include <bits/stdc++.h>
using namespace std;
bool flag[100010]={0};
int l,m;
int u,v;
int main() {
cin>>l>>m;
for(int i=0;i<m;i++){
cin>>u>>v;
for(int o=u;o<=v;o++){
flag[o]=1;
}
}
int ans=0;
for(int i=0;i<=l;i++){
if(flag[i]==0)ans++;
}
cout<<ans;
return 0;
}