这道题可以很好的帮助理解差分算法
差分的AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 100000+10
ll cnt[N];
int main()
{
ll t;
cin>>t;
while(t--)
{
ll n,m,s,f;
cin>>n>>m>>s>>f;//[s,f) >=m
memset(cnt,0,sizeof(cnt));
for(ll i=0,p;i<n;i++) cin>>p,cnt[p]++;
for(ll i=0,p;i<n;i++) cin>>p,cnt[p]--;
for(ll i=0;i<f;i++) cnt[i]+=cnt[i-1];
bool flag=false;
for(ll i=s;i<f;i++)
{
if(cnt[i]<m)
{
flag=true;
break;
}
}
if(flag)
{
cout<<"NO"<<" "<<*min_element(cnt+s,cnt+f)<<endl;
}
else
{
cout<<"YES"<<" "<<*max_element(cnt+s,cnt+f)<<endl;
}
}
}