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

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

提示:如果直接逐个判断每一时间点的农民挤奶人数,需要比较大的空间开销,而且速度也比较慢。可以先将时间按升序排序,然后从左到右逐个扫描,维护一个当前区间[tmp_begin, tmp_end],如果下一组数据的begin比tmp_end小(或等于),则时间段是连续的,检查这组数据的en,去max{end, tmp_end}作为tmp_end的值。否则,区间断开,记录下区间长度,继续操作,得到最大的区间长度。此问题的解决方法很多,欢迎同学们使用自己的方法,如果非常巧妙,可以考虑加分。

【输入形式】
第一行为整数N,之后N行每行两个小于1000000的非负整数,表示每个农民的开始时刻和结束时刻

【输出形式】
最长至少有一人在挤奶的时间和最长的无人挤奶的时间(运行时间1s以内)

【样例输入】

3

300 1000

700 1200

1500 2100

【样例输出】

900 300

【样例说明】

【评分标准】
请大家在程序中写出必要的注释,如果程序没有必要的注释,将酌情扣分。由于本题数据规模较大,如果使用简单的数据结构和算法可能不能够满足时间效率的要求,所以请大家尽量使用比较高级的数据结构和解法,如果未能满足时间要求,我们会根据时间效率来酌情给分,效率越高分值越高。

#include<stdio.h>
#include<stdlib.h>
typedef struct
{long long begin;long long end;}Node,*PNode;//区间的起始和终止
int cmp(const void *a,const void *b)
{Node c=*(Node *)a;Node d=*(Node *)b;return c.begin-d.begin;
}
long long max(long long *a,int n)
{long long max=a[0];int i;for(i=0;i<n;i++)if(a[i]>max)max=a[i];return max;
}int main()
{long int n;int i,j;scanf("%ld",&n);PNode p;p=(Node *)malloc(n*sizeof(Node));for(i=0;i<n;i++)scanf("%lld%lld",&p[i].begin,&p[i].end);qsort(p,n,sizeof(p[0]),cmp);// for(i=0;i<n;i++)// printf("%ld %ld  ",p[i].begin,p[i].end);int a[n];//用来记录是否和上一个时间段连续,连续为1,不连续为0a[0]=1;for(i=1;i<n;i++){if(p[i].begin<=p[i-1].end)a[i]=1;else a[i]=0;}//for(i=0;i<n;i++)// printf("%d ",a[i]);//printf("\n");long long  b[1000]={0};//记录有人挤奶的时间段long long c[1000]={0};//记录无人挤奶的时间段int k1=0,k2=0,m=0;//k1是c的数组长度,k2是b的数组长度for(i=0;i<n;i++){    if(a[i]==0){  long long max=p[m].end;for(j=m;j<i;j++)if(p[j].end>max)max=p[j].end;if(max<p[i].begin){c[k1++]=p[i].begin-max;m=i;}else   c[k1++]=0;//printf("%lld ",c[k1-1]);}if(a[i]==1){    b[k2++]=p[i].end-p[m].begin;//printf("%ld %ld\n",p[m].begin,b[k2-1]);}}printf("%lld %lld",max(b,k2),max(c,k1));free(p);return 0;
}

【综合题】农民挤奶问题相关推荐

  1. 2014计算机三级网络技术,2014计算机三级网络技术综合题解题思路

    2014计算机三级网络技术综合题解题思路,全部自码 第一小题 IP地址的计算公式 正常IP地址计算:已知IP地址:子网掩码: 地址类别:A类地址:1-126(00)B类地址:128-191(10) C ...

  2. 计算机aoa综合题word,AOA-word综合题操作步骤(修正版)

    <AOA-word综合题操作步骤(修正版)>由会员分享,可在线阅读,更多相关<AOA-word综合题操作步骤(修正版)(7页珍藏版)>请在人人文库网上搜索. 1.AOA-WOR ...

  3. 2015年部分互联网公司笔试综合题及答案

    笔试了几场,对部分题目做了下整理与总结,代码写得比较渣,需要多多训练. 网易算法工程师岗编程题 问题描述: 小V今年有n门课,每门都课都有考试.为了拿到奖学金,小V必须让自己的平均年成绩至少为avg, ...

  4. 计算页数_中级会计师计算题、综合题的审题注意事项与解题思路

    为什么要进行考前冲刺根据多年的考试和培训经验,考前过一遍课本是必须的,且提分相当明显.换种解释方式如果平时测试在40分左右的同学通过最后一个月的冲刺考过的概率能增加65%以上,但最后一个月抓不住机会就 ...

  5. 1 数列分块入门_线性代数入门——关于分块矩阵的典型证明题与综合题

    系列简介:这个系列文章讲解线性代数的基础内容,注重学习方法的培养.线性代数课程的一个重要特点(也是难点)是概念众多,而且各概念间有着千丝万缕的联系,对于初学者不易理解的问题我们会不惜笔墨加以解释.在内 ...

  6. 【考前冲刺】计算机三级网络技术之综合题-IP地址计算

    [考前冲刺]计算机三级网络技术之综合题-IP地址计算 二级IP地址计算 [1]地址类别 [2]网络地址 [3]直接广播地址 [4]主机号 [5]可用IP地址 此类型的题目主要分布在综合题的第一题,涉及 ...

  7. 计算机三级网络技术——综合题一IP地址计算等

    综合题1(送分题) 常见有 1.根据IP地址和子网掩码计算别的信息: 2.或者根据主机号和子网内的的最后一个可用IP地址计算前面的信息: 做此类题首先要熟悉IP地址的2进制转换,开始可以先在本上或记事 ...

  8. 让理科生沉默,让文科生流泪的综合题详解

    让理科生沉默,让文科生流泪的综合题详解 阿布evo 发表于  2011-05-09 21:34 原文地址:http://www.guokr.com/article/31315/ 这套题就是前两天在校内 ...

  9. 计算机网络技术综合题大全

    第1章 计算机网络概述 一.简答题 1.简述计算机网络的发展过程. 答:从1946年世界上第一台计算机ENIAC的诞生到现在网络的全面普及,计算机网络的发展大体可以分为以下4个阶段: (1)第一代计算 ...

最新文章

  1. 2021 年 NLP 重要国际会议时间
  2. 追查连接mysql的客户端
  3. UI控件问题和XCode编译警告和错误解决方法集锦 (持续更新ing)
  4. 【Http】一文备忘Http状态码(406,415,422)
  5. java的正则表达式 CPU_小心踩雷!一个小小的正则表达式竟把CPU拖垮......
  6. c语言float二进制输出代码_下面C语言中这十四大谜题,不看答案你能做出来吗?...
  7. MongoDB 新功能介绍-Change Streams
  8. PHP超链接传数据库值格式,php – 使用超链接更新数据库
  9. PAT (Basic Level) Practice1021 个位数统计
  10. Win 10 桌面简单美化(+开始菜单 TileGenie)
  11. php集成环境安装包网盘,php环境集成安装包下载|php5环境集成安装包正式版_ - 极光下载站...
  12. 【02】 PC端网页布局之CSS3-pink老师-2022/03
  13. 用python开发的云监控平台_edwin报警和监控平台开源了(python源码)
  14. ppt制作心得【转发】
  15. 单页面优化有哪些可以参考的策略
  16. (5/300)常微分方程之一阶齐次方程
  17. 深圳APP开发共享汽车APP
  18. html里子目录,技术宅文之还电脑屏幕原来的百富美姿态_html/css_WEB-ITnose
  19. 使用git 提交本地文件夹及文件
  20. 淘宝代购系统|代购网站建设|代购系统开发代码对接教程

热门文章

  1. 2021年是做安卓开发人员的绝佳时机,成功入职阿里
  2. numpy、pandas下载速度慢问题
  3. 4Gwifi无线远程非接触红外测温传感器mqtt/http推送数据
  4. 野火多功能调试助手】-摄像头调试助手通讯协议
  5. HELLO WORLD! 但是javac找不到文件?
  6. 参考文献管理软件Jabref和Zotero使用笔记
  7. 啧啧啧……JAVA你看看你……
  8. 二分查找 Binary Search
  9. iOS关于时间的处理
  10. GRU门控循环单元读书笔记