【USACO题库】1.2.1 Milking Cows挤牛奶

简介: 【USACO题库】1.2.1 Milking Cows挤牛奶

   一开始认为过不了,后来交就AC了。

1007. 【USACO题库】1.2.1 Milking Cows挤牛奶
(File IO): input:milk.in output:milk.out

题目描述

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

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

最长至少有一人在挤奶的时间段。

最长的无人挤奶的时间段。

输入

第一行一个整数N。

接下来N+1行,每行两个小于1000000的非负整数,表示一个农民的开始时刻与结束时刻。

输出

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

样例输入

3

300 1000

700 1200

1500 2100

样例输出

900 300


先来看道题:

马路旁的树

 

题目描述

某学校有一条“春秋大道”,其道路两旁对称地栽有树木。现在为了保证整体的美观,需要移除其中的一些树。因此有必要统计,在移除一些树木之后,春秋大道上还有多少棵树。

为了简化问题,把春秋大道想象成一条数轴,数轴坐标为1 ~ n。

尚未进行移除操作时,每个坐标点上有两棵树。

给一次移除操作(x y),将会把[x,y]区间上所有的树移除。

最终需要统计,在所有移除操作完成以后,还剩有多少棵树。

输入

第一行为一个整数n( 1<= n <= 1000 )。

第二行为一个整数k( 1<= k <= 100),代表移除操作的个数。

下面k行,每行有两个整数x,y ( 1 <= x < =y <= n),中间有一个空格分隔开,代表把[x,y]区间上的所有树移除。

输出

输出所有移除操作完成之后,道路两旁还剩树的数目总数。

注意:是道路两旁!

样例输入

5

2

1 3

4 5

样例输出

0

这两道题,有异曲同工之妙。

思路:

只需要一个a数组, 比如说:100~200 那么a[100]~a[199]都标记为1,其余为零, 以此类推,当所有的时间都标记完了之后,我们就可以开始统计了。(标记法)

代码如下:

#include<bits/stdc++.h>
using namespace std; 
const int maxn=1000010; 
bool a[maxn]; int t=0; 
int n,ans1=0,ans2=0; int x,y;
int maxx=0,minx=maxn; 
int main() 
{ 
  freopen("milk.in","r",stdin);
  freopen("milk.out","w",stdout);
  scanf("%d",&n); 
  for(int i=1;i<=n;i++)
  { 
      scanf("%d",&x); 
    scanf("%d",&y); 
    minx=min(x,minx); 
    maxx=max(y,maxx); 
    for(int j=x;j<y;i++) a[j]=1; 
  }
  int p=minx; 
  int q=maxx; 
  for(int i=p;i<=q;i++) 
  { 
    if(a[i]==1) t++; 
    else
    {
      ans1=max(ans1,t);
      t=0; 
    }
  } 
  for(int i=p;i<=q;i++) 
  { 
    if(a[i]==0)t++; 
    else 
    { 
      ans2=max(ans2,t); 
      t=0; 
    }  
  } 
  cout<<ans1<<" "<<ans2<<endl;
}

image.gif


相关文章
|
4月前
|
算法
AcWing 1343. 挤牛奶(每日一题)
AcWing 1343. 挤牛奶(每日一题)
|
4月前
|
算法
AcWing 1355. 母亲的牛奶(每日一题)
AcWing 1355. 母亲的牛奶(每日一题)
|
9月前
|
机器学习/深度学习 索引
PTA-猴子选大王
程序模拟了猴子报数选猴王的过程,初始有N只猴子(N≤1000),从1号开始按1到3报数,报到3的猴子退出,直至只剩一只猴子,该猴子成为猴王。输入示例为11,输出示例为7。代码通过初始化猴子列表和当前报数索引,不断移除报数为3的猴子,最后返回剩余猴子的编号。
56 0
|
9月前
洛谷P1204 or SSL-1088 USACO 1.2 挤牛奶
洛谷P1204 or SSL-1088 USACO 1.2 挤牛奶
PTA 1092 最好吃的月饼
月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种。
123 0
|
大数据 网络架构 索引
Leecode134加油站打卡
Leecode134加油站打卡
101 0
Leecode134加油站打卡
|
存储
【LeetCode】这儿童节的糖不好吃啊
【LeetCode】这儿童节的糖不好吃啊
156 0
【LeetCode】这儿童节的糖不好吃啊
|
缓存
【八月】每日一题 - 640. 求解方程
【八月】每日一题 - 640. 求解方程
108 0
|
存储 测试技术