文章目录

  • 前言
  • 题目
  • 思路
  • AC代码

前言

看到很多同学好像是关注了我,大家要学习一下代码呢,不能直接copy哦。

题目

思路

其实这题我是抄的hhh,今天早上看了一下代码,觉得原来别人写的太冗长了,没有必要,所以按照自己的思路写了一下。
总体的思路是利用给出的飞机起飞的时候是按照升序给出的,所以我们不需要额外的对时间处理工作,只用线性查找即可。关键在于如何判断今天的最后一架飞机与明天的第一架飞机之间的时间跨度。
刚开始想到了约瑟夫环( 程设书的P139 ),但是这个题只有一个答案,也就意味着我们只用一次线性遍历即可,不需要额外的技巧连接成环。
当我们遍历到最后一架飞机的时候,需要特殊判断一下它与第一架飞机时间之间的关系就好了,而这架飞机的+T+1后的时间很有可能跨越了00:00这个特殊的时间段,因此我们还需要判断,其实关系理顺了就很简单。

AC代码

#include <bits/stdc++.h>
using namespace std;int main() {int n, T;cin >> n >> T;int plane[n + 1][2]; //n+1防止越界for (int i = 1; i <= n; ++i) {cin >> plane[i][0] >> plane[i][1];}/*由于会存在一种情况是该天的最后一次飞机与明天的第一架飞机起飞时间的比较问题,因此我们需要在最后一架飞机特判一下*/int res = INT_MAX, temp1, temp2;for (int i = 1; i <= n; ++i) {if (i != n) {temp1 = plane[i][0] * 60 + plane[i][1];temp2 = plane[i + 1][0] * 60 + plane[i + 1][1];if (temp2 - temp1 >= 2 * T + 2) {res = min(temp1 + T + 1, res);}} else { //特判temp1 = plane[n][0] * 60 + plane[n][1];temp2 = plane[1][0] * 60 + plane[1][1];temp1 = temp1 + T + 1;if (temp1 >= 24 * 60) {//第一种情况是+T+1后来到了第二天temp1 -= 24 * 60; //首先返回去if (temp2 - temp1 > T) {res = min(temp1, res);break;}} else {//第二种情况是+T+1后还在今天int delt1 = 24 * 60 - temp1;//delt1为今天距离00:00的时间 temp2视为第二天距离00:00的时间if (delt1 + temp2 > T) {res = min(temp1, res);break;}}}}cout << res / 60 << " " << res - res / 60 * 60;
/*取min的原因在于由于数组是顺序遍历的,所以我们无法在一开始就确定
昨天的最后一架飞机是否能起飞,这种情况是最早的一次*/
}

HNU 程序设计 飞机起飞时间安排相关推荐

  1. 题快速公交 |小希的新工作 |岁月留痕 |排队喝水 |阿迪看医生 |松雅的花园 |拜访朋友 |猴导师 |贪心的阿迪 |飞机起飞时间安排 |松雅的旅馆 |小女孩和楼梯|小希与火车|基于神经网络的垃圾分类

    写在前面:本题解旨在帮助进行作业参考,为学习升华所用.登高自卑,戒骄戒躁. 第一题:快速公交BRT 思路分析:本题考察数组基本应用,强模拟的题目. #include<iostream> u ...

  2. 飞机起飞时间安排(未完)

    [问题描述] 阿迪在一个大型机场担任飞机跑道交通管制员,他控制一个通常用于着陆的跑道.因此,他有一个未来一段时间飞机着陆的时间安排,每次着陆持续时间为1分钟.他被要求在安排表中插入一次起飞,起飞本身需 ...

  3. 第十一届北京师范大学程序设计竞赛(网络同步赛)+A. BNU ACM校队时间安排表

    A. BNU ACM校队时间安排表 Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO ...

  4. 假定我们要建立一个航空数据库,存储如下信息: •每个机场有机场编号、所在城市; •每个航班有航班编号、起飞时间、飞行时间; •飞机有飞机编号、型号、载客人数; •飞行员有飞行员编号、姓名;

    题目要求 假定我们要建立一个航空数据库,存储如下信息: 每个机场有机场编号.所在城市: 每个航班有航班编号.起飞时间.飞行时间: 飞机有飞机编号.型号.载客人数: 飞行员有飞行员编号.姓名: 每个航班 ...

  5. 计算机二级考试3月时间安排,2017年3月份计算机二级考试时间安排

    2017年3月份计算机二级考试时间安排 2017年3月份全国计算机等级考试(以下简称NCRE)报名工作即将开始. 根据教育部考试中心<关于做好2017年全国计算机等级考试工作的通知>(教试 ...

  6. 计算机会考补考时间安排,2019-2020学年第二学期初补考考试安排(实时更新)

    各位同学: 2019-2020学年第二学期初补考考试时间为:第13周周五(5月15日)至第14周周五(5月22日),其中第13周周六.周日(5月16日.5月17日)全天安排考试,不再安排其他教学活动. ...

  7. 心得 | 《用得上的商学课》 004 边际成本 | 飞机起飞前的座位,只卖一块钱?...

    图片来源于<用得上的商学课>课程封面 004 边际成本(Marginal Cost,简称MC) 在前3节课程分别学习了机会成本.比较优势.沉没成本,本节课学习边际成本. 定义:       ...

  8. 计算机二级考试每一科的时间,计算机二级考试的时间安排

    导读:小编根据大家的需要整理了一份关于<计算机二级考试的时间安排>的内容,具体内容: 计算机二级考试是全国计算机等级考试(NationalComputerRankExamination,简 ...

  9. 江苏2021年计算机二级报名时间,江苏3月计算机二级考试报名时间安排

    摘要: 江苏3月计算机二级考试报名时间安排为你介绍2020年3月江苏全国计算机二级考试报名时间已经公布.以下是小编为大家整理的2020年3月江苏计算机二级考试报名时间相关内容,希望对大家有所参考与帮助 ...

最新文章

  1. 怎样创造计算机语言,如何创建编译成JavaScript的编程语言
  2. ALTERA产品型号命名
  3. 深度学习之基于CNN实现汉字版手写数字识别(Chinese-Mnist)
  4. 使用aggregate在MongoDB中查找重复的数据记录
  5. jquery remove() empty()
  6. Java中的时间和日期(上)
  7. 用Unity开发AR创意礼物:会动的照片
  8. 辨异 —— Java 中的抽象类和接口
  9. 0903 - Firebase Analytics PK Google Analytics
  10. 网络平台运行计算机终端,Terminal是什么意思?Mac如何打开终端Terminal?
  11. 计算机物联网前沿技术汇总
  12. 7-2 冒泡法排序之过程 (15分)
  13. Archive of Our Own_开箱用out-of-box Redis序列号生成器 不再写任何代码 你值得拥有
  14. 计算机网络拓扑应用于,基于复杂网络理论的计算机网络拓扑研究
  15. 论文 | Movie Editing and Cognitive Event Segmentation in Virtual Reality Video
  16. 情人节程序员用HTML网页表白【做我女朋友】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  17. font-family的中文字体对应英文写法
  18. 任怡 国防科大计算机学院,BOPPPS模型在微课教学设计及实践中应用.doc
  19. 吾生也有涯,吾知也无涯_乌拉(12)
  20. resharper激活

热门文章

  1. Zabbix-1.8.14 安装
  2. 转 - 猴子都能看懂的比特币区块链技术之加密算法
  3. python入门(七):CGI编程
  4. 关于徒手脱壳的几种方法
  5. [No0000D6]端口-进程查询.bat
  6. WinForm 快捷键设置
  7. [转]JavaScript继承详解
  8. php 调用继承的方法吗,如何从继承的方法中调用PHP父方法?
  9. RabbitMQ的基础知识与使用
  10. 后台创建窗体下拉列表