c语言列车调度,列车调度

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

输入格式

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

输出格式

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

输入样例

9

8 4 2 5 3 9 1 6 7

输出样例

4

此题考查的是贪心+二分,核心在于序号小的跟在序号最接近自己且比自己大的列车后面,下面分析来源于参考链接1:

下面是4条用来调度的轨道:

1248                            1248

35       —————->     35

9                                  7

6                                  6

当前轨道数len=0

首先8进接着4可以跟在8后面,然后是2。

len=1

现在第一条轨道最后的是2,5肯定不能排在2后面,因为5要比2先出去。所以5进入第二条轨道。现在的状态:(只记录排在轨道最后面的列车)

2

5

len=2

轮到3,3可以排在5后面。

2

3

9比3和2都大,只能进入新的轨道

2

3

9

len=3

1比2,3都小,贪心选择,选最接近的2。于是1进入当前第一条轨道

1

3

9

len=3

6比2,3大

1

3

6

7比1,3,6都大

1

3

6

7

len=4

接着按顺序出去就OK了

代码如下:

#include

using namespace std;

int main(){

int n;

int num[100001];

int len=0;

int k;

cin >> n;

while(n–) {

cin >> k;

if(len==0||num[len-1]

num[len++]=k;

}

else{ //若存在轨道最后一个数大于当前数,利用二分法去最优轨道(轨道最后一个数与当前数的差值最小)

int l=0;

int r=len-1;

int mid;

sort(num,num+len); //保证每个轨道的最后一个数按照从小到大排列

while(l

mid=(l+r)/2;

if(num[mid]>k) r=mid-1;

else l=mid+1;

}

num[l]=k;

}

}

cout << len << endl;

return 0;

}

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

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

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

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

(0)


相关推荐

  • robots.txt文件详解「建议收藏」

    robots.txt文件详解「建议收藏」原文地址:robots.txt-禁止爬虫Robots.txt-禁止爬虫robots.txt用于禁止网络爬虫访问网站指定目录。robots.txt的格式采用面向行的语法:空行、注释行(以#打头)、规则行。规则行的格式为:Field:value。常见的规则行:User-Agent、Disallow、Allow行。User-Agent行User-Agent:r

  • c++中constexpr_define和const定义常量的区别

    c++中constexpr_define和const定义常量的区别常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。例1:#include&lt;iostream&gt;usingnamespacestd;intmain(){ constinta1=10;//a1是常量表达式。 constinta2=a1+20;//a2是常量表达…

  • 从零开始学android<Notification通知.四十四.>

    从零开始学android<Notification通知.四十四.>在android中有时会在主界面上收到某些应用的推送,有的可以包含图片,声音或者震动效果,当点击这些提示时,有时还可以进入到发送提示的的应用。这些提示的推送就是通知,当然通知早根本上也是你一种服务。首先想要使用通知就必须使用到Notification.Builder和NotificationManager这两个类使用Notification.Builder来取

  • Unity HLOD System[通俗易懂]

    Unity HLOD System[通俗易懂]1.1HLODSystem简介首先,HLODSystem主要的目标是为了减少DrawCall。然后,进行更多的Batch批处理。其次,减少面数和纹理,这样我们相应地节省了内存,并提升了加载时间。HLODSystem只针对当前所在的地方进行加载,它会流式加载网格和纹理,在后台进行异步的操作。本次HLOD是基于官方AutoLOD代码的扩展和改进制作出来了的,链接:https://github.com/Unity-Technologies/AutoLOD,链接里有一篇官方的文章,…

    2022年10月22日
  • Qt之log数据展示模块简要实现

    Log模块主要用于实时测井数据的显示和测后曲线数据的预览和打印,为更好的展示对Qt中相关知识点的应用,特以Log模块为例对其进行简要实现。内容导图:一、功能需求1、界面效果图Log模块实现曲线

    2021年12月29日
  • 用c语言实现顺序表_顺序表代码讲解以及实现

    用c语言实现顺序表_顺序表代码讲解以及实现一、学习内容:1、创建顺序表2、按数值查找3、按位置查找4、插入一个数值5、删除一个数值6、销毁顺序表7、求前驱算法8、求后继算法

发表回复

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

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