Milking Cows 挤牛奶
1.2.1 Milking Cows 挤牛奶
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 554 Solved: 108
[Submit][Status][Forum]
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
经典贪心题。
对于最长的挤奶时间,需要控制的是挤奶结束时间最晚的那个区间和那个结束点,如果下一个区间是在这个点之前结束的,直接continue就好,它对答案没有影响,如果是在这个点之前而且该区间的开始时间要小于这个点的话,就要更新答案和最后结束的那个点,否则,就说明一段连续的挤奶时间结束,和之前存储的最大的挤奶时间进行比较。
对于最长的无人挤奶的时间,也是查不多的思想。
但是,还会有一些细节需要注意,我在代码中给出标识。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<deque>
#include<map>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0);
const double e=exp();
//const int MAXN =2e5+10;
const int N = ; struct inteval
{
LL head;
LL tail;
} inteval[N];
LL check[N]; bool cmp(struct inteval a,struct inteval b)
{
if(a.head==b.head)
return a.tail<b.tail;
return a.head<b.head;
}
int main()
{
LL n,i,p,j;
LL work=,rest=; scanf("%lld",&n);
for(i=; i<n; i++)
{
scanf("%lld%lld",&inteval[i].head,&inteval[i].tail);
}
sort(inteval,inteval+n,cmp); LL a,b,mid=inteval[].tail-inteval[].head; work=mid=inteval[].tail-inteval[].head;
b=inteval[].tail;
for(i=; i<n; i++)
{
a=inteval[i].tail;
if(a<=b)
continue;
else if(inteval[i].head<=b)
{
mid+=a-b;
b=a;
}
else
{
if(mid>work)
work=mid;
mid=a-inteval[i].head;
b=inteval[i].tail; //注意 最晚结束的那个点在这里不应该赋为零
} }
if(mid>work) //注意 最后还要再比较一次
work=mid; b=inteval[].tail;
for(i=;i<n;i++)
{
a=inteval[i].head;
if(b>=a)
{
if(inteval[i].tail>b)
b=inteval[i].tail;
continue;
}
else
{
mid=a-b;
b=inteval[i].tail;
if(mid>rest)
rest=mid;
}
}
// 注意 找最长的无人挤奶的时间段最后不能再比一次
printf("%lld %lld\n",work,rest); return ;
}
Milking Cows 挤牛奶的更多相关文章
- Milking Cows 挤牛奶 USACO 排序 模拟
1005: 1.2.1 Milking Cows 挤牛奶 时间限制: 1 Sec 内存限制: 128 MB提交: 15 解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1 ...
- 洛谷P1204 [USACO1.2]挤牛奶Milking Cows
P1204 [USACO1.2]挤牛奶Milking Cows 474通过 1.4K提交 题目提供者该用户不存在 标签USACO 难度普及- 提交 讨论 题解 最新讨论 请各位帮忙看下程序 错误 ...
- 【题解】Luogu P1204 [USACO1.2]挤牛奶Milking Cows
原题传送门:P1204 [USACO1.2]挤牛奶Milking Cows 实际是道很弱智的题目qaq 但窝还是觉得用珂朵莉树写会++rp(窝都初二了,还要考pj) 前置芝士:珂朵莉树 窝博客里对珂朵 ...
- 【洛谷P1204】【USACO1.2】挤牛奶Milking Cows
P1204 [USACO1.2]挤牛奶Milking Cows 题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个 ...
- codeforce ---A. Milking cows
A. Milking cows time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- USACO Section 1.2 Milking Cows 解题报告
题目 题目描述 有3个农夫每天早上五点钟便起床去挤牛奶,现在第一个农夫挤牛奶的时刻为300(五点钟之后的第300个分钟开始),1000的时候结束.第二个农夫从700开始,1200结束.最后一个农夫从1 ...
- Milking Cows
Milking Cows Three farmers rise at 5 am each morning and head for the barn to milk three cows. The f ...
- Cogs 465. 挤牛奶
465. 挤牛奶 ★ 输入文件:milk2.in 输出文件:milk2.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 三个农民每天清晨5点起床,然后去牛棚给3 ...
- codevs——1385 挤牛奶
1385 挤牛奶 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 查看运行结果 题目描述 Description 三个农民每天清 ...
随机推荐
- 为何php curl post模式发送数据速度变慢了?我来说说原因
事例: 今天要向一台服务器上传文件,原版是curl的get模式,现在改用了post模式,按照原本的思想,代码如下 <?php $post['c'] = 'config'; $post['t'] ...
- PHP面向对象之final关键字
最终类 最终类,其实就是一种特殊要求的类:要求该类不允许往下继承下去. 形式: final class 类名{ //类的成员定义...跟一般类的定义一样! } 最终方法 最终方法,就是一个不允许下 ...
- Thread的run()与start()的区别
java的线程是通过java.lang.Thread类来实现的.VM启动时会有一个由主方法所定义的线程.可以通过创建Thread的实例来创建新的线程.每个线程都是通过某个特定Thread对象所对应的方 ...
- Deepin系统又损坏了!
1.首先,去Deepin官方下载镜像(记得MD5检验一下).2.提取ISO里的安装程序到桌面,执行之&写入.(提醒:勾选下面的支持BIOS启动的选项,自测深度的UEFI很不稳定,建议不使用UE ...
- 【前端学习笔记】函数定义、函数调用、this
函数定义的三种方式与特点: 1.函数声明:(特点:会被前置:重复定义函数时,最后一次定义有效.) 2.函数表达式: 3.函数实例化:(特点:只能访问本地作用域与全局作用域!!!) /* 对象实例化定义 ...
- js简易随机打乱数组方法
打乱随机数算法很多,不过看这个还挺简便的,记录下来. function shuffle(a) { var len = a.length; for(var i=0;i<len;i++){ var ...
- Linux进入单用户模式(passwd root修改密码)
进入单用户模式——passwd root修改密码 1.在grub 页面输入a,进入修改内核模式 2.在内核的结尾“/”,输入空格,在输入single,回车 3.启动系统,进入单用户模式 4.Passw ...
- [九]SpringBoot 之 定时任务
代码: package me.shijunjie.config; import org.springframework.context.annotation.Configuration; import ...
- C++解析(21):四个操作符
0.目录 1.逻辑操作符的陷阱 2.逗号操作符的分析 3.前置操作符和后置操作符 4.小结 1.逻辑操作符的陷阱 逻辑运算符的原生语义: 操作数只有两种值(true和false) 逻辑表达式不用完全计 ...
- Native Wifi API
原文链接地址:https://www.cnblogs.com/jackcin/p/3285357.html 在windows平台下,可以使用native wifi api来控制无线网卡,包括获取无线网 ...