列车调度(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 }

 


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

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

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


相关推荐

  • VS2017添加Eigen库

    VS2017添加Eigen库下载,并解压。解压之后的文件夹,重命名为eigen。在项目属性-&amp;gt;配置属性-&amp;gt;vc++目录-&amp;gt;包含目录,比如我的eigen3在d盘,包含目录就是:D:\eigen;然后就可以在工程中使用了,不会在报打不开文件的错误。Note:最好弄清楚程序中所使用的Eigen库的版本,因为最新版本可能对低版本的函数不支持…

    2022年10月11日
    3
  • linux mysql重置密码_linux系统重置

    linux mysql重置密码_linux系统重置linux的Mysql重置密码(1)先修改配置文件/etc/my.cnf令MySQL跳过登录时的权限检验,在[mysqld]下加入一行:skip-grant-tables(2)重启MySQLsystemctlrestartmysqld(3)免密码登录MySQLskip-grant-tables(4)mysql客户端执行如下命令,修改root密码mysql>usemysql;MySQL>updatemysql.usersetauthentication_s

    2022年10月15日
    6
  • inputstream输出到文件_input type file

    inputstream输出到文件_input type filepackagehtc;/*————FoolishDoger——————2017-9-28————–*/importjava.io.BufferedInputStream;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInp

    2022年9月26日
    7
  • 2015年2月编程语言排行榜:JavaScript排名达到历史最高

    2015年2月编程语言排行榜:JavaScript排名达到历史最高

    2021年9月4日
    51
  • 业务逻辑漏洞总结[通俗易懂]

    业务逻辑漏洞总结[通俗易懂]逻辑漏洞简介逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足。操作上并不影响程序运行,在逻辑上是顺利执行的。这种漏洞一般的防护手段或设备无法阻止,因为走的都是合法流量。也没有防护标准。逻辑漏洞分类越权漏洞密码修改密码找回验证码漏洞支付漏洞短信轰炸投票/积分/抽奖逻辑漏洞重要性常见的OWASP

    2022年5月24日
    44
  • golang中的json decode丢失精度的问题

    golang中的json decode丢失精度的问题最近发现的一个坑当用enconding/json包的时候,数字默认是处理为float64类型的,这就导致了int64可能会丢失精度,这时候要用dec.UseNumber将处理的数字转换成json.Number的形式,再自己去做typeassertion代码packagemainimport( "fmt" "encoding/json" "strings")funcCr…

    2022年7月17日
    19

发表回复

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

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