线段树固然可以做,但是在考虑线段树之前应该先考虑一下,这种用两个数组来解决问题的方法能不能行,如果行的话,就会为我们省很多时间,毕竟线段树代码量比较大
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int fi[1000010]; int main() { int n,m; while(~scanf("%d%d",&n,&m)) { memset(fi,0,sizeof(fi)); int sum = 0; int ans = 0; while(m--) { int l,r; scanf("%d%d",&l,&r); fi[l]++,fi[r+1]--; } for(int i = 0; i <= n; i++) { sum += fi[i]; if(sum == 0) ans++; } printf("%d\n",ans); } return 0; }