Milking Cows 挤牛奶 USACO 排序 模拟

时间:2021-07-17 21:26:46

1005: 1.2.1 Milking Cows 挤牛奶

时间限制: 1 Sec  内存限制: 128 MB
提交: 15  解决: 9
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

1.2.1 Milking Cows 挤牛奶

(milk2.pas/c/cpp)

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

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

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

文件名: milk2

输入:

(file milk2.in)

Line 1:

一个整数N。

Lines 2..N+1:

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

输出:

(file milk2.out)

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

SAMPLE INPUT
3
300 1000
700 1200
1500 2100
SAMPLE OUTPUT
900 300

提示

Milking Cows 挤牛奶 USACO 排序 模拟

来源/分类

我的天哪 这道题难道有那么难吗

有n(<=5000)个区间

这n个区间在0-100 0000之间

p.s.个人认为就是个简单的排序+模拟。。。

我想的是先把这些区间按照起始时间排一个序(快排比较简单吧nlogn)

So?设一个指针从0-时间的最大值    跑一遍  再+100 0000    那肯定超时啊。。。。

看来这么整不行  呜呜呜~~~~

嗷嗷嗷好像明白了   在1-100 0000之间其实还是有很多点没有扫到

而且既然直接从1-100 0000扫会超时  只要把n个区间的起始点排好序以后 把这n个区间从前往后扫一遍不就OK了吗    +5000肯定不超时啦!!!(暗暗地说:对呀!!天哪我刚才咋么没想到!)

那在扫的时候怎么模拟呢?

emmmm。。。

沉思片刻 再看看题吧

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

最长的无人挤奶的时间段。(从有人挤奶开始算起

第一个只要打一个擂台就行了 在从前往后枚举区间的时候看看有没有接起来或者重叠    其实也就是是否相连

再简单一点就是判断当前区间的起点是否小于等于tmpend 然后tmpend每次和当前区间打擂台取一个最大值

第二个。。天哪咋办。。原地懵圈

停停停再想想O(∩_∩)O哈哈~

如果当前区间的begin比tmpend大

那就相当于不相连了  而且可以保证这之间没有别的区间进来掺和了

为甚么呢》

其实也很简单  tmpend其实存的也就是到当前区间为止最大最靠后的区间的end值

那么最靠后的在tmpend  那tmpend~当前枚举区间的begin之间当然就没有别的区间啦

6666

敲一敲试试吧

AC了!

我的代码变量名可能很通俗易懂 O(∩_∩)O哈哈~

还有一个非常重要的问题

以后打擂台的时候假如要寻找最大值

初始的maxn一定要设成0 别设成-1 比如这一个题的最长的无人时间 可能每时每刻都有人啊  那你要是一开始的时候设得-1就输出了-1  其实应该是 0 !

下一次不要再犯错误了(~ ̄▽ ̄)~

#include<bits/stdc++.h>
using namespace std;
struct Node{
int Begin,End;//结构体大法好
}milk[];
int cmp(Node a,Node b){
return a.Begin<b.Begin;//其实那个End不用考虑啊
}
int main(){
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d",&milk[i].Begin,&milk[i].End);
sort(milk+,milk+n+,cmp);//sort排序一下 再加一个cmp
int tmpend=milk[].End , max_at_least_1=milk[].End-milk[].Begin , max_nobody=;
int at_least_1_tot=milk[].End-milk[].Begin;
for(int i=;i<=n;i++){
if(milk[i].Begin<=tmpend){//区间相连
if(milk[i].End>=tmpend)
at_least_1_tot+=milk[i].End-tmpend;
tmpend=max(tmpend,milk[i].End);
}
else{//有空隙
max_at_least_1=max(max_at_least_1,at_least_1_tot);//取最大值
at_least_1_tot=milk[i].End-milk[i].Begin;//还原重新累计
max_nobody=max(max_nobody,milk[i].Begin-tmpend);
tmpend=max(tmpend,milk[i].End);
}
}
printf("%d %d", max_at_least_1 , max_nobody ); return ;
}

Milking Cows 挤牛奶 USACO 排序 模拟的更多相关文章

  1. Milking Cows 挤牛奶

    1.2.1 Milking Cows 挤牛奶 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 554  Solved: 108[Submit][Status ...

  2. Milking Cows &sol;&sol;&sol; 区间计数 离散化排序 oj10105

    题目大意: 输入n  接下来描述1~n位农夫挤牛奶的开始与结束时间   Sample Input 3300 1000700 12001500 2100 Sample Output 900 300 注意 ...

  3. codevs——1385 挤牛奶

    1385 挤牛奶 USACO  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze 题解  查看运行结果     题目描述 Description 三个农民每天清 ...

  4. 洛谷P1204 &lbrack;USACO1&period;2&rsqb;挤牛奶Milking Cows

    P1204 [USACO1.2]挤牛奶Milking Cows 474通过 1.4K提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 请各位帮忙看下程序 错误 ...

  5. 【洛谷P1204】【USACO1&period;2】挤牛奶Milking Cows

    P1204 [USACO1.2]挤牛奶Milking Cows 题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个 ...

  6. 【题解】Luogu P1204 &lbrack;USACO1&period;2&rsqb;挤牛奶Milking Cows

    原题传送门:P1204 [USACO1.2]挤牛奶Milking Cows 实际是道很弱智的题目qaq 但窝还是觉得用珂朵莉树写会++rp(窝都初二了,还要考pj) 前置芝士:珂朵莉树 窝博客里对珂朵 ...

  7. &lbrack;USACO1&period;2&rsqb;挤牛奶Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

  8. USACO Section 1&period;2 Milking Cows 解题报告

    题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...

  9. codeforce ---A&period; Milking cows

    A. Milking cows time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

随机推荐

  1. Robot Framework--02 菜单栏&amp&semi;工具栏

    转自:http://blog.csdn.net/tulituqi/article/details/7584795 我把RIDE的界面大致分了四个区域:菜单栏.工具栏.案例及资源区.工作区,如下图 菜单 ...

  2. &lbrack;leetcode&rsqb; Bitwise AND of Numbers Range

    Bitwise AND of Numbers Range Given a range [m, n] where 0 <= m <= n <= 2147483647, return t ...

  3. 什么是领域模型&lpar;domain model&rpar;?贫血模型&lpar;anaemic domain model&rpar; 和充血模型&lpar;rich domain model&rpar;有什么区别

    http://blog.csdn.net/helloboat/article/details/51208128 领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专 ...

  4. 交叉编译 小米路由器mini 的 python(MIPS)

    看了很多文章,要么说的是用opkg安装python,要么说的是小米路由器的交叉编译,就是没有mini的.学习了这篇文章(http://me.deepgully.com/post/56389167868 ...

  5. docker虚拟化之将容器做成镜像

    1,docker ps -a 选择要启动的容器. 2,docker start  容器+ID 启动容器 3,docker exec -i -t   容器ID /bin/bash   进入容器 这里的/ ...

  6. 你我公益模式系统APP开发

    你我公益模式系统APP开发(微or电 158.1500.1390 小凡团队)你我公益系统开发,你我公益系统模式定制,你我公益系统开发软件,你我公益平台系统开发. 互联网世界无边*,互联网创业者应敢于 ...

  7. zookeeper3&period;4&period;9 centos6&period;5 集群安装

    安装jdk http://www.cnblogs.com/xiaojf/p/6568426.html [root@m1 jar]# .tar.gz -C ../ [root@m1 jar]# cd . ...

  8. 中秋H5,这篇脑洞开的可以!

    案例:嫦娥--寻开心出品:凯迪仕 1.内容:这是一支视频类H5案例.Loading完毕进入页面,首屏提示案例最佳观看方式为先锁屏再横屏.点击开始按钮播放视频,视频讲述"葫芦娃"缠着 ...

  9. Python基础:二、python介绍

    Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言 python的创始人为GuidovanRossum.1989年圣诞节期间,Guido再阿姆斯特丹未来打发时间,决心开发一个新的脚本解释程序 ...

  10. HTTP协议冷知识大全

    如果不用HTTPS,HTTP协议如何安全的传输密码信息? HTTP协议是纯文本协议,没有任何加密措施.通过HTTP协议传输的数据都可以在网络上被完全监听.如果用户登陆时将用户名和密码直接明文通过HTT ...