`
925695531
  • 浏览: 22305 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

usaco Milking Cows 报告

 
阅读更多
题意:

三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。

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

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

题解:设置一个数组,表示当前时间点,初始化为0,每次读入起点终点,在起点处加一,终点减一,然后从开始遍历,用sum来加每一个时间点的值,sum是0的时候表示没有挤奶,sum大于0的时候表示在挤奶,然后就可以搞了
代码:
/*
ID:     lishicao
PROG:   milk2
LANG:   C++
*/
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std ;

int  vis[1000500] ;

ifstream fin  ( "milk2.in"  ) ;
ofstream fout ( "milk2.out" ) ;

int  main()
{
    int  N ;
    int  start , end , Max = 0 , Min = 99999999 , milked = 0 , notmilked = 0 ;
    memset( vis , 0 , sizeof( vis ) ) ;

    fin >> N ;
    while( N -- )
    {
        fin >> start >> end ;
        if( end > Max ) Max = end ;
        if( start < Min ) Min = start ;
        vis[start] ++ ;
        vis[end] --   ;
    }

    int  sum = 0 ;
    int  Count = 0 ;
    int  flag = 0 ;

    for( int i = Min ; i <= Max ; i ++ )
    {
        sum += vis[i] ;
        if( flag == 0 ){
            if( sum == 0 ) {
                flag = 1 ;
                if( milked < Count ) milked = Count ;
                Count = 0 ;
            }
            Count ++ ;
        }
        else{
            if( sum > 0 ) {
                flag = 0 ;
                if( notmilked < Count ) notmilked = Count ;
                Count = 0 ;
            }
            Count ++ ;
        }
    }
    fout << milked << " " << notmilked << endl ;
    return 0 ;
}

分享到:
评论

相关推荐

    USACO题目Milking Cows及代码解析

    USACO题目Milking Cows及代码解析

    usaco5.2解题报告1

    usaco5.2解题报告1

    usaco2.1解题报告1

    usaco2.1解题报告1

    usaco2.3解题报告1

    usaco2.3解题报告1

    usaco1.3解题报告1

    usaco1.3解题报告1

    usaco2.4解题报告1

    usaco2.4解题报告1

    usaco解题报告,希望对大家有用

    usaco解题报告,就是usaco.training.gateway上面的题目全解

    usaco 2005年解题报告

    usaco 2005年比赛的解题报告以及测试数据

    usaco5.1解题报告1

    与第 4 章衔接引入凸包,DP 的单调思想加强。Fencing the Cows 圈奶牛译 by Felicia Crazy描述农夫约翰想要建造一个围栏用来围住

    usaco 2004年解题报告

    包括usaco2004年比赛的解题报告以及测试数据

    usaco5.3解题报告1

    第一行应该包括一个正整数:子任务 A 第二行应该包括子任务 B 的解 第二问的要求是最少添加多少条有向边可以使得整张图任意一个学校有软件,其

    usaco3.1解题报告1

    本章主要衔接第二章,题目类型不定描述农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。约翰已经给他

    usaco3.4解题报告1

    1.歌曲必须按照创作的时间顺序在 CD 盘上出现 2.选中的歌曲数目尽可能地多 3.不仅同光盘上的歌曲写入时间要按顺序,前一张光盘上的歌曲不能比后一张

    usaco3.2解题报告1

    因为 10=2*5,所以每有一个 0 就有一对 2*5=10 出现,反之,如果这个数的质因数分解没有成对的 2,5,我们就可以简单的对 10 求模,而不用管前面

    usaco5.4解题报告1

    1.假设一个 nxn 的拉丁方在固定第一行和第一列的情况下的构造数目是 L[n],那 2.最后一行不用构造,如果搜索完 N-1 行,到达第 N 行,那么一定存在

    usaco3.3解题报告1

    第一行 优惠商品的种类数(0 ) 第二行..第 s+1 行 每一行都用几个整数来表示一种优惠方式 第一个整数 n 第一行: 两个用空格隔开的

    usaco4.4解题报告1

    3 5 6 4 2 1 3 5 7 6 4 2 3 5 4分析:先观察样例数据,如果把还没移动的那一步也算上,那么空格的位置为4 3 5 6 4 2 1 3 5

    usaco4.2解题报告1

    第二行到第 N+1 行: 每行有三个整数,Si, Ei, 和 Ci 第一个星期,农夫约翰随便地让 第一行 两个整数,N (0 ) 和 M

    usaco 合集usaco 合集usaco 合集

    usaco 合集,包括英文原题和中文译题,测试数据以及答案,很全啊!usaco 合集usaco 合集usaco 合集usaco 合集

    USACO官网93题fps格式 OJ题库

    6 [1.2] 挤牛奶Milking Cows 7 [1.2] 方块转换 Transformations 8 [1.2] 回文平方数 Palindromic Squares 9 [1.2] 双重回文数 Dual Palindromes 10 [1.3] 混合牛奶 Mixing Milk 11 [1.3] 修理牛棚 Barn Repair 12 ...

Global site tag (gtag.js) - Google Analytics