区间覆盖,水题。说一个自己写题时遇到的比较坑的地方,就是关于区间覆盖的条件的问题,如果存在区间相交,那么相交的条件就是要么其中一个区间的左端点在另一个区间中,要么右端点在另一个区间中(比赛刚开始自己值写了一半,还是自己太菜了)
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
typedef long long ll;
using namespace std;
int main() {
int t;
cin>>t;
while(t--) {
ll n,x,m,l,r;
cin>>n>>x>>m;
ll maxx=0,minn=1e10,flag=0;
for(int i=1; i<=m; i++) {
cin>>l>>r;
if(!flag) {
if(l<=x&&x<=r) {
flag=1;
minn=min(minn,l);
maxx=max(maxx,r);
}
} else {
if((l<=maxx&&maxx<=r)||(minn>=l&&minn<=r)) {注意判断条件!
minn=min(minn,l);
maxx=max(maxx,r);
}
}
}
if(flag)cout<<maxx-minn+1<<endl;
else cout<<1<<endl;
}
}