7-2 列车调度 (25 分)(数学问题+二分查找)

该博客讨论了一个火车站列车调度问题,目标是使列车按序号递减的顺序从出口离开。通过二分查找算法,找到能容纳所有列车的最小铁轨数量。示例代码展示了如何实现这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

输入格式:

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

输出格式:

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

输入样例:

9
8 4 2 5 3 9 1 6 7

输出样例:

4

#include<iostream>

#include<cstdio>

#include<algorithm>

using namespace std;

int a[100005];

int b[100005];

int cnt;

//用二分查找,去找比他大的第一个元素(这个比较快,其他的达到n²容易超时)

//如果能找到,就把那个元素换为当前元素

//如果找不到,则轨道数增加

//所以最后数组b的长度即为所需要的最小轨道数

void Binary_

实验二 线性结构(学习通) 编程题 1. 列车车厢重排问题问题描述】 列车车厢重排时,位于入轨道和出轨道之间的缓冲轨道按照FIFO方式运作, 如下图所示,因此可将它们视为队列。禁止将车厢从缓冲轨道移到入轨道,或从出轨道移到缓冲轨道。所有的车厢移动都要按照图中箭头所示的方向进行。 微信图片_20240314101045.jpg 第k条轨道Hk可直接将车厢从入轨道移到出轨道。其余 k-1 条轨道用来缓存不能直接进入出轨道的车厢。 假定有9节车厢需要重排,其初始顺序5、8、1、7、4、2、9、6、3。假设k=3(见图)。3号车厢不能直接进入出轨道,因为1号车厢和2号车厢必须排在3号车厢之前。因此,3号车厢进入缓冲轨道H1。6号车厢可进入缓冲轨道H1,排在3号车厢之后,因为6号车厢是在3号车厢之后进入出轨道。9号车厢可以继续进入缓冲轨道H1,排在6号车厢之后。2号车厢不可排在9号车厢之后,因为它必须在9号车厢之前进入出轨道。因此,2号车厢进入缓冲轨道H2.排在第一。4号车厢可以进入缓冲轨道H2,排在2号车厢之后。7号车厢也可进入缓冲轨道H2,排在4号车厢之后。这时,1号车厢可通过缓冲轨道 H3直接进入出轨道。接下来2号车厢从缓冲轨道H2进入出轨道,3号厢从缓冲轨道H1进入出轨道,4号车厢从缓冲轨道H2进入出轨道。由于5号车厢此时仍在入轨道上,且排在8号车厢之后,所以8号车厢进入缓冲轨道H2,这样5号车厢可以通过缓冲轨道H3,直接从入轨道进入出轨道。然后,6号7号、8号和9号车厢依次从缓冲轨道进入出轨道。 给定入轨道车厢的一个排列,输出至少需要的缓冲轨道数量。 【输入形式】 5 8 1 7 4 2 9 6 3 【输出形式】 3 【样例输入】 【样例输出】 【样例说明】 【评标准】 编程语言 c++ 提交源文件
最新发布
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值