列车调度(PTA)

列车调度(PTA)7-11列车调度(25分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条

大家好,又见面了,我是你们的朋友全栈君。

7-11 列车调度 (25 分)

火车站的列车调度铁轨的结构如下图所示。

<span role="heading" aria-level="2">列车调度(PTA)

两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?

输入格式:

输入第一行给出一个整数N (2 N 105​​),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。

输出格式:

在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。

输入样例:

9
8 4 2 5 3 9 1 6 7

输出样例:

4

一维数组 + 二分查找

一维数组模拟各轨道,数组记录当前轨道最小的数,设置全轨道最大值maxn
大于maxn说明当前各个轨道都容不下,轨道数+1,否则二分查找大于当前值的最小数,更新

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     const int N=1e5+5;
10     int tear[N];
11     memset(tear,0,sizeof(tear));
12     int n,x,cnt=0,maxn=0;
13 
14     scanf("%d",&n);
15     for(int i=0;i<n;i++){
16         scanf("%d",&x);
17         if(x>maxn){
18             tear[cnt++]=maxn=x;
19             continue;
20         }
21         //二分查找
22         int l=0,r=cnt;
23         while(l!=r){
24             if(tear[(l+r)/2]<x){
25                 l=(l+r)/2+1;
26             }
27             else{
28                 r=(l+r)/2;
29             }
30         }
31         tear[l]=x;
32         if(l==cnt-1){
33             maxn=x;
34         }
35     }
36     cout<<cnt<<endl;
37     return 0;
38 }

 


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154573.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • stm32 sd卡读写_sd卡引脚定义图

    stm32 sd卡读写_sd卡引脚定义图SD卡   SD卡(SecureDigitalMemoryCard)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。   SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC…

  • 打开虚拟机时出现不能为虚拟电脑打开一个新任务「建议收藏」

    打开虚拟机时出现不能为虚拟电脑打开一个新任务「建议收藏」标题:打开虚拟机时出现不能为虚拟电脑打开一个新任务在用虚拟机打开Ubuntu时出现以下情况解决方法在查找了许多有关资料试用无效后,最终用以下两个步骤解决了该问题1.打开VirtualBox安装文件夹里的\drivers\vboxdrv文件夹2.右键VBoxDrv.inf文件,点击安装;3.安装完成后重启VirtualBox。参考文章在参照该作者成功打开一次后续仍然出现原问题后续发现应该是权限问题每次打开必须用管理员身份,直接双击是不可以的。这样问题就解决啦。…

    2022年10月31日
  • html设置背景图片自适应

    html设置背景图片自适应在网上找了很久,终于在一个百度问答里找到正确答案,记录下来,方便以后使用。在<body>中设置:<bodybackground=”images\bg.jpg”style=”background-repeat:no-repeat;background-size:100%100%;background-attachment:fixed;”>第一行是图片…

  • 使用CCUserDefault 推断用户是否是第一次登陆系统及UserDefault全路径的获取「建议收藏」

    使用CCUserDefault 推断用户是否是第一次登陆系统及UserDefault全路径的获取

  • ajax实训总结_培训日记

    ajax实训总结_培训日记今天由梁言兵老师为大家讲解ajax,他首先介绍了什么是web2.0及web2.0的应用。ajax框架:客户端框架:DOJO,bindows,Rico服务器端框架:DWR,JSON,buffalo基础库:prototype.js这次讲解的是buffalo框架。buffalo要通过一个注册文件注册Bean对象,buffalo配置文件中的配置项是“对象实例名=完全限定类名”。客户端代码:varEN…

  • Vue刷新页面的三种方式[通俗易懂]

    Vue刷新页面的三种方式[通俗易懂]我们在写项目的时候,经常会遇到,用户执行完某个动作,改变了某些状态,需要重新刷新页面,以此来重新渲染页面。如:用户登录成功、增加、删除、更新等。原始方法:location.reload();vue自带的路由跳转:this.$router.go(0);用过的人都知道,前两者都是强制刷新页面,会出现短暂的闪烁,用户体验效果不好。所以,我们选择第三种方式:3.首先在App里面…

    2022年10月17日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号