校门外的数(前缀和)
校门外的树
http://www.nowcoder.com/questionTerminal/0e8cfc82936048769af45967f3c4ef7e
用前缀和数组记录每个点是否被选择过(a[i]>=1),并将没有被选择过的点(a[i]==0)加起来就可以了
#include<iostream>
using namespace std;
int L,M,l,r,ans;
int a[10005];
int main(){
cin>>L>>M;
for(int i=1;i<=M;i++){
cin>>l>>r;
a[l]++,a[r+1]--;
}
for(int i=0;i<=L;i++){
a[i]+=a[i-1];
if(a[i]==0)
ans++;
}
cout<<ans<<endl;
return 0;
}
查看2道真题和解析