zoukankan      html  css  js  c++  java
  • usaco 1.2.1(指针技巧)

    ★Milking Cows 挤牛奶

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

    INPUT FORMAT

    Line 1:  一个整数 N. Lines 2..N+1:  每行两个小于 1000000 的非负整数,表示一个农民的开始时刻与结束时刻.
    SAMPLE INPUT(file milk2.in)
    3
    300 1000
    700 1200
    1500 2100
    OUTPUT FORMAT
    一行,两个整数,即题目所要求的两个答案.
    SAMPLE OUTPUT(file milk2.out)
    900 300

    #include<cstring>
    #include<cstdio>
    #include<iostream>
    using namespace std;
    int a[1000000],n,x,y;
    int MAX=0,maxn=0,minn=0,MIN=0,first=123456,end=0;
    int main(){
        int i,j,s,t,m;
        memset(a,0,sizeof(a)); 
        freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
        
        scanf("%d",&n);
        for (i=0;i<n;i++){
            scanf("%d%d",&x,&y);
            for (j=x;j<y;j++){
                a[j]=1;
            }
            if (x<=first) first=x;
            if (y>=end) end=y;
            
        }
        for (i=first;i<end;i++){
            if (a[i]==1){
                maxn++;
                if (maxn>=MAX) MAX=maxn;
            }
            if (a[i]==0){
                maxn=0;
                minn++;
                if (minn>=MIN) MIN=minn;
            }
            else minn=0;
        }
        printf("%d %d
    ",MAX,MIN);
        
        return 0;
    }
    
    SOURCE
    

      

    刚开始看到的第一眼以为上线段树+部分优化
    但40大神表示那有可能会超时,之后就向我介绍了某种很简便的方法...学习了~~
    
    如果用在这题上的话是这样的,用一个数组模拟,如果在某段时间有人的话,那段时间a[i]=1;最后一遍过就可以了
    
    40给我讲的例子是类似的,只不过那个是问最多人的时间段
    改成a[i]++就可以了
    
    MARK
    

      

  • 相关阅读:
    Spring MVC系列-(5) AOP
    Spring MVC系列-(4) Bean的生命周期
    Spring MVC系列-(3) Bean的装配
    Spring MVC系列-(2) Bean的装配
    Spring MVC系列-(1) Spring概述
    JVM性能优化系列-(7) 深入了解性能优化
    JVM性能优化系列-(6) 晚期编译优化
    pycharm下载较快地址
    编程学习记录14:Oracle数据库序列,触发器
    编程学习记录13:Oracle数据库,表的查询
  • 原文地址:https://www.cnblogs.com/polebug/p/3637920.html
Copyright © 2011-2022 走看看