栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[USACO 1.2.1] Milking Cows 挤牛奶

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[USACO 1.2.1] Milking Cows 挤牛奶

题目描述

三个农民每天清晨 5 点起床, 然后去牛棚给三头牛挤奶。

第一个农民在 300 秒 (从 5 点开始计时) 给他的牛挤奶, 一直到 1000 秒。 第二个农民在 700 秒开始, 在 1200 秒结束。 第三个农民在 1500 秒开始, 2100 秒结束。

期间最长的至少有一个农民在挤奶的连续时间为 900 秒 (从 300 秒到 1200 秒), 而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为 300 秒 (从 1200 秒到 1500 秒)。

你的任务是编一个程序, 读入一个有n个农民挤n头牛的工作时间列表, 计算以下两点(均以秒为单位):

最长至少有一人在挤奶的时间段。最长的无人挤奶的时间段。 (从有人挤奶开始算起) 输入格式

第一行一个正整数n,接下来 n 行, 每行两个非负整数 l,r 表示一个农民的开始时刻与结束时刻。

输出格式

一行, 两个整数, 即题目所要求的两个答案。

样例 输入数据#1
3
300 1000
700 1200
1500 2100
输出数据#1
900 300
数据范围

对于 100%的数据,1<=n<=5000, 0<=l<=r<=1e6。

AC代码:
#include  //万能头文件
using namespace std;
typedef long long ll;
const int N=1e6+5;
int n,le=N,ri=-1,ans,cnt,max1,max2;
bool flag[N];
struct sd{ //结构体表示坐标
    ll l,r;
}a[5005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i].l>>a[i].r;
    	if(a[i].l<=le) le=a[i].l;
    	if(a[i].r>=ri) ri=a[i].r;
    	for(ll j=a[i].l;jmax2) max2=cnt;
    		cnt=0;
		}
    	else if(flag[i]==false){
    		cnt++;
    		if(ans>max1) max1=ans;
    		ans=0;
		}
	}
    if (ans>max1) max1=ans;
    if (cnt>max2) max2=cnt;
    cout< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号