思路
题目大意判断是否存在k使得k出现的次数最多(可以随意删除某个区间),如果有其它数相等也不满足,所以只需统计有数字k存在的区间所有数字出现的次数,判断数字k出现的次数是否是唯一最大即可,这里用差分统计数字出现的次数防止超时。
代码
#include<iostream>
#include<queue>
#include<cstring>
#include<cmath>
#define LL long long
using namespace std;
const int N=55;
int a[N];
int main(){
int t,n,k,l,r;
cin>>t;
while(t--){
bool flag=0;
cin>>n>>k;
memset(a,0,sizeof(a));
while(n--){
cin>>l>>r;
if(l<=k&&r>=k){
a[l]++;
a[r+1]--;
}
}
for(int i=1;i<=50;i++){
a[i]+=a[i-1];
}
for(int i=1;i<=50;i++){
if(i==k)continue;
if(a[i]>=a[k]){
flag=1;
break;
}
}
if(flag)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}