题解 P1204 【[USACO1.2]挤牛奶Milking Cows】
一道简单的题目
思路很简单,可以直接把整个时间看成一个区间,不多说直接给代码
#include<bits/stdc++.h>
inline int read(){//快速读入,不解释
int x=0;
char c=getchar();
while(c>'9'||c<'0')
c=getchar();
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x;
}
int a[10005];
int n,l,r,ml=1e9,mr=-1;//ml代表区间最小值,mr代表区间最大值
ine ans1=-1,ans2=-1,max1=0,max2=0;
int main(){
memset(a,0,sizeof(a))//初始化,全部为0
n=read();//读入n
for(int i=1;i<=n;i++){
l=read();
r=read();
ml=std::min(ml,l);//求出区间最大值
mr=std::max(mr,r);//求出区间最小值
for(int j=l;j<=r;j++)
a[j]=1;//标记,将有人挤奶的时间赋值为1
}
for(int i=ml;i<=mr;i++){
if(a[i])max1++;//不停累加
else{
ans1=std::max(ans1,max1);//求出最长的一直有人挤奶的时间长度
max1=0;//继续枚举
}
if(!a[i])max2++;
else{
ans2=std::max(ans2,max2);
max2=0;
}
}
std::cout<<ans1<<" "<<ans2;//输出结果
return 0;//养成好习惯
//std::实际没什么用只是加快编译速度
}
给个赞再走吧