治安管理
分析:没有oj提交,不知道会不会AC,我是通过画数轴来找到思路的,就是用一个c数组来记录所有时间的巡逻人数。
#include<stdio.h>
#include<string.h>
int inf = 99999999;
int a[10010],b[10010],c[10010];
int main()
{
int i,j,t,n,m,s,f;
int max,min,mmax,mmin,flag;
scanf("%d",&t);
while(t --)
{
memset(c,0,sizeof(c));
flag = 0;mmin = inf;mmax=0;
scanf("%d%d%d%d",&n,&m,&s,&f);
min = s;max = f;
for(i = 0; i < n; i ++)
{
scanf("%d",&a[i]);
if(min > a[i])
min = a[i];
}
for(j = 0; j < n; j ++)
{
scanf("%d",&b[j]);
if(max < b[j])
max = b[j];
}
for(i = 0; i < n; i ++)
for(j = a[i]; j <= b[i]; j ++)
c[j] ++;
for(i = 0; i < n; i ++)
for(j = 0; j < n; j ++)
if(a[i] == b[j])
c[a[i]] --;
for(i = min; i <= max; i ++)
{
if(mmin > c[i])
mmin = c[i];
if(mmax < c[i])
mmax = c[i];
}
for(i = s; i <= f; i ++)
{
if(c[i] < m)
{
flag = 1;
printf("NO %d\n",mmin);
break;
}
}
if(flag == 0)
printf("YES %d\n",mmax);
}
return 0;
}