zoukankan      html  css  js  c++  java
  • Milking Cows 挤牛奶

    Description

    三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻。第二个农民在700时刻开始,在 1200时刻结束。第三个农民在1500时刻开始2100时刻结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300时刻到1200时刻),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300时刻(从1200时刻到1500时刻)。 你的任务是编一个程序,读入一个有N个农民(1 <= N <= 5000)挤N头牛的工作时间列表,计算以下两点(均以秒为单位): 最长至少有一人在挤奶的时间段。 最长的无人挤奶的时间段。(从有人挤奶开始算起)

    Input

    Line 1: 一个整数N。 Lines 2..N+1: 每行两个小于1000000的非负整数,表示一个农民的开始时刻与结束时刻。

    Output

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

    Sample Input

    3
    300 1000
    700 1200
    1500 2100

    Sample Output

    900 300
    #include <algorithm>
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    using namespace std;
    typedef long long ll;
    const int MAX=1e6+1;
    int flag[MAX]={0};
    int main()
    {
        ll n,i;
        ll a,b,minn=MAX,maxx=0,ans1=0,ans2=0,sum1=0,sum2=0;
        scanf("%lld",&n);
        while(n--)
        {
            scanf("%lld%lld",&a,&b);
            for(i=a;i<b;i++)//不能写=
                flag[i]=1;
            if(b>maxx)
                maxx=b;
            if(a<minn)
                minn=a;
        }
        for(i=minn;i<maxx;i++)//不能写=
        {
            if(flag[i]==1)
            {
                sum1++;
                sum2=0;
                if(sum1>=ans1)
                    ans1=sum1;
            }
            else
            {
                sum2++;
                sum1=0;
                if(sum2>=ans2)
                    ans2=sum2;
            }
        }
        //printf("%lld %lld ",maxx,minn);
        printf("%lld %lld
    ",ans1,ans2);
        return 0;
    }
    
  • 相关阅读:
    elementui表单输入框部分校验--判断
    vue学习如何引入js,封装操作localStorage本地储存的方法
    vue组件传值 递增次数传递bug修复
    vue深度监听之手机格式344
    vue-------滑动验证
    vue get/post请求如何携带cookie的问题
    elementui的dialog组件踩坑
    WebStorm License Activation (WebStorm许可证激活)
    input 标签实现带提示文字的输入框
    隐藏 input 标签的边框
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702705.html
Copyright © 2011-2022 走看看