当初用bool数组写的。
今天室友问我这道题,我才发现这不是个区间合并吗?
#include<bits/stdc++.h>
using namespace std;
#define l first
#define r second
int main(){
int n,t;cin>>n>>t;
pair<int,int> a[t];
for(auto &&[l,r]:a) cin>>l>>r;
sort(a,a+t);
vector<pair<int,int>> b;
for(int i=1;i<t;++i)
if(a[i].l<a[i-1].r) a[i]={a[i-1].l,max(a[i].r,a[i-1].r)};
else b.emplace_back(a[i-1]);
b.emplace_back(a[t-1]);
cout<<accumulate(b.begin(),b.end(),n+1,[](int x,auto i){return x-(i.r-i.l+1);});
}
有多种写法 这题数据有点水 所以用bool数组也能过