題目銜接: http://acm.nyist.cf/problem/1364
治安管理
- 內存限制:128MB 時間限制:3000ms 特判: No
- 通過數:51 提交數:132 難度:2
題目描述:
SZ市是中國改革開放建立的經濟特區,是中國改革開放的窗口,已發展爲有一定影響力的國際化城市,創造了舉世矚目的“SZ速度”。SZ市海、陸、空、鐵口岸俱全,是中國擁有口岸數量最多、出入境人員最多、車流量最大的口岸城市.
爲了維護SZ經濟特區社會治安秩序,保障特區改革開放和經濟建設的順利進行, 特別設立了SZ社會治安綜合治理委員會主管特區的社會治安綜合治理工作。公安機關是社會治安的主管部門,依照法律、法規的規定進行治安行政管理,打擊擾亂社會治安的違法犯罪行爲,維護社會秩序。
YYH大型活動將在[S,F)這段時間舉行,現要求活動期間任何時刻巡邏的警察人數不少於M人。公安機關將有N名警察在維護活動的安全,每人巡邏時間爲[ai,bi)。請你檢查目前的值班安排,是否符合要求。若滿足要求,輸出YES,並輸出某個時刻同時巡邏的最多人數;若不滿足要求,輸出NO,並輸出某個時刻同時巡邏的最少人數。
輸入描述:
第一行: T 表示以下有T組測試數據( 1≤ T ≤5 ) 對每組數據, 第一行:N M S F ( 1≤N≤10000 1≤M ≤1000 0≤S<F≤100000) 第二行,a1 a2 …. an 警察巡邏起始時間 第三行,b1 b2 …. bn 警察巡邏結束時間 ( 0≤ai0 i=1…. n)輸出描述:
對每組測試數據,輸出佔一行。若滿足要求,輸出YES,並輸出某個時刻同時巡邏的最多人數;若不滿足要求,輸出NO,並輸出某個時刻同時巡邏的最少人數。(中間一個空格)
樣例輸入:
2 5 2 0 10 0 0 2 7 6 6 2 7 10 10 10 2 6 11 1 3 5 7 9 2 4 6 8 10 2 4 6 8 10 3 5 7 9 11樣例輸出:
YES 2 NO 1
題目大意:。。。
思路:大水題,直接類似於桶排,找下區間內最大最小值即可,但是要注意區間是左開右閉!!!!wa了好幾發纔看到。
代碼:
/*
題目大意
*/
#include<map>
#include<set>
#include <vector>
#include<stack>
#include<queue>
#include<cmath>
#include<string>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll unsigned long long
#define inf 0x3f3f3f
#define esp 1e-8
#define bug {printf("mmp\n");}
#define mm(a,b) memset(a,b,sizeof(a))
#define T() int test,q=1;scanf("%d",&test); while(test--)
#define Test() {freopen("F:\\B.in","r",stdin);freopen("F:\\test2.out","w",stdout);}
const int maxn=1e5+10;
const double pi=acos(-1.0);
const int N=110;
const ll mod=1e9+7;
int num[maxn];
int a[maxn],b[maxn];
int main()
{
T()
{
mm(num,0);
mm(a,0);
mm(b,0);
int n,m,s,f;
cin>>n>>m>>s>>f;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
for(int i=0; i<n; i++)
{
cin>>b[i];
for(int j=a[i]; j<b[i]; j++)
{
num[j]++;
}
}
int flag=0,minn=inf,maxx=-inf,id1,id2;
for(int i=s; i<f; i++)
{
if(minn>num[i])
{
minn=num[i];
}
if(maxx<num[i])
{
maxx=num[i];
}
}
if(minn<m)
cout<<"NO "<<minn<<endl;
else
cout<<"YES "<<maxx<<endl;
}
return 0;
}