用前缀和数组记录每个点是否被选择过(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++){ ...