pta 列车调度_数据结构/PTA-列车调度/栈/数组

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

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

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

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

pta 列车调度_数据结构/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

分析:出这道题的人的语文成绩估计一塌糊涂……

可以这么理解题意:原本,只有一条连接出入口的轨道。现在,由于好几辆车都不是顺序驶入,却还要求他们降序驶出,所以需要另开出其他轨道供它们                   走,使得它们能降序驶出。(但原有轨道应算在结果里)

想让列车按降序输出,那么必须让同一条轨道上的车编号大的先进入,编号小的后进入,而如果一条轨道上编号最小的车的编号如果比要处理的

车的编号还要小的话,那么这个该处理的车就必须新开一条轨道去让该车进入。

样例中输出的结果应该是   8   4   2   1——————

5   3——————————

9   6——————————

7————————————

1、考虑使用二分法

2、使用set容器

先将一个数插入进set容器中,set容器默认从小到大(自动排序);

依次进行每个数的输入,如果输入的数比当前set容器中的最后一个数小,删除set容器中第一个大于输入数的值,再将输入数进行插入,

重新排序后,输入的值就代替了删除的值,依次循环往复,进行到结尾 。

代码

二分法做法:

#include

using namespacestd;intmain()

{intn;

scanf(“%d”,&n);int a[100005]= {0}; //最大到十万

int i,sum=0;intx;for(i=0;i

{

scanf(“%d”,&x);if(sum==0||a[sum-1]

{

a[sum]=x;

sum++;

}else //该车比前车小,考虑是跟着前车的路,还是跟着其它比它大的车的路

{ //二分查找,找大于该车的最小编码车

int p=0;int q=sum-1;while(p

{int mid=(p+q)/2;if(a[mid]==x)break;else if(a[mid]>x)

q=mid-1;elsep=mid+1;

}

a[p]=x;

}

}

printf(“%d”,sum);

}

set做法:

#include

using namespacestd;intmain()

{int a[100001]={0};sets;intn;

scanf(“%d”,&n);for(int i=1;i<=n;i++){

cin>>a[i];

}for(int i=1;i<=n;i++){if(s.upper_bound(a[i])!=s.end()){

s.erase(s.upper_bound(a[i]));

s.insert(a[i]);

}elses.insert(a[i]);

}

cout<

}

https://blog.csdn.net/qq_40160605/article/details/80150252

https://blog.csdn.net/suguoliang/article/details/88592304

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159403.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式

    2021,2020,2019,2018年河南高考一分一段表 (含文科和理科成绩排名) excel格式河南省高招办的资料如下,但是是pdf格式的:2018理科排名2018文科排名博主为了生计,整理了excel档的,如果有需要,向二维码支付2元,备注邮箱地址,第一时间发送给你。…

    2022年7月14日
    22
  • fastCGI详解「建议收藏」

    fastCGI详解「建议收藏」http{#缓存路径fastcgi_cache_path/usr/local/nginx/fastcgi_cachelevels=1:2keys_zone=licache:10minact

    2022年7月4日
    20
  • C语言——五子棋人机对战

    C语言——五子棋人机对战         先说下背景吧,写下这篇博客时,博主大一在读,C语言初学者,寒假无事,便计划写几个由C语言实现的小游戏以提升编程能力。在这篇博客里分享的是可人机对战的五子棋游戏。         棋类游戏要实现初级的机器智能,其核心思想便是:感知(SENSE)-&gt;思考(THINK)-&gt;行动(ACT)。所以,本文将尽量以这个顺序介绍实现过程。(1)前期准备:    此程序中,机器…

    2022年6月29日
    29
  • ubuntu 通过命令行 卸载软件_命令提示符卸载软件

    ubuntu 通过命令行 卸载软件_命令提示符卸载软件1、在终端里apt-get安装的软件:安装软件sudo apt-getinstallsoftname1softname2softname3……卸载软件sudoapt-getremovesoftname1softname2softname3……卸载并清除配置sudo apt-getremove–purgesoftname1更新软件信息数据库sudoapt-getu…

    2022年9月9日
    2
  • 数据库:索引

    数据库:索引 什么是数据库索引?数据库索引是对数据库表中一列或多列进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。数据库索引就像书的目录,能加快数据库的查询速度。索引分为聚簇索引(聚集索引)和非聚簇

    2022年7月2日
    24
  • pycharm连接mysql操作_使用pycharm连接数据库及进行一些简单的操作「建议收藏」

    pycharm连接mysql操作_使用pycharm连接数据库及进行一些简单的操作「建议收藏」一般的开发过程中,我们需要使用pycharm来连接数据库,从而来进行对数据库的操作,这里主要连接的是mysql数据库,另外加了使用pandas模块读取数据库的操作,基本的操作如下所示:直接连接数据库importpymysqlconn=pymysql.connect(host=’localhost’,port=3306,db=’joker’,user=’root’,password=’root…

    2025年6月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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