首页 > 其他分享 >L2-014 列车调度(二分法)

L2-014 列车调度(二分法)

时间:2024-05-31 23:01:25浏览次数:14  
标签:列车 uns int 铁轨 mid 二分法 L2 MAX 014

1.题目

L2-014 列车调度
分数 25

全屏浏览

切换布局
作者 陈越
单位 浙江大学
火车站的列车调度铁轨的结构如下图所示。

两端分别是一条入口(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

2.分析

        先看原理:

        只要列车序号比轨道末尾的列车序号小就能排在其后面,例如铁轨上有8 4 ,则2号列车可以排到其后面。反之则需要另开一条铁轨。因此我们只需用一个数组记录每条铁轨的最小列车号就行了,数组的大小就是铁轨个数。

        存储的数组其实是个递增序列,因为小的列车号都排在靠前的铁轨了。对于递增序列,我们用二分法就不会超时了。

3.代码

        最开始用暴力查找,会时间超时。

#include<iostream>
using namespace std;
const int MAX=100000;
int main(){
    int N,q[MAX],c=0,uns;
    cin>>N;
    for(int i=0;i<N;i++){
        cin>>uns;
        if(uns>q[c]) q[++c]=uns;
        else{
            for(int j=1;j<=c;j++){
                if(q[j]>uns){
                    q[j]=uns;
                    break;
                }
            }
        }
    }
    cout<<c<<endl;
}

       

        换成二分查找就不会超时了。

 

#include<iostream>
using namespace std;
const int MAX=100000;
int main(){
    int N,q[MAX],c=0,uns;
    cin>>N;
    for(int i=0;i<N;i++){
        cin>>uns;
        if(uns>q[c]) q[++c]=uns;   //如果比铁轨里的最小值(数组的最大值)大,就增加一个铁轨
        else{                      //否则进行二分法替换铁轨的最小值
            int l=1,r=c,t;
            while(l<=r){
                int mid=(l+r)>>1;     //移位运算符相当于(l+r)/2
                if(q[mid]>uns) t=mid,r=mid-1;     //查找下标
                else l=mid+1;
            }
            q[t]=uns;      
        }
    }
    cout<<c<<endl;          //输出数组大小,即铁轨条数。
}

标签:列车,uns,int,铁轨,mid,二分法,L2,MAX,014
From: https://blog.csdn.net/m0_75262437/article/details/139362667

相关文章

  • L2-013 红色警报(并查集)
    1.题目L2-013红色警报分数25全屏浏览切换布局作者陈越单位浙江大学战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城......
  • L2-043 龙龙送外卖(C++, 记忆化搜索)
    龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环——你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。每到中午12点,帕特小区就进入了点餐高峰。一开始,只有一两个地方点外卖,龙......
  • HTML20_HTML标签3
    一、文件标签构成html最基本的标签html:html文档的根标签head:头标签。用于指定html文档的一些属性。引入外部的资源title:标题标签。body:体标签<!DOCTYPEhtml>:html5中定义该文档是html文档二、文本标签和文本有关的标签1、标签注释:<!--注释内容--><h1>to<......
  • HTML20_HTML入门2
    一、HTML概念是最基础的网页开发语言HyperTextMarkupLanguage超文本标记语言 *超文本: *超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本. *标记语言: *由标签构成的语言。<标签名称>如html,xml *......
  • 安装fail2ban服务-防止用户暴力破解root密码
    安装fail2ban服务,防止用户暴力破解root密码(最多让试着登录5次,5次密码输错就封杀ip)[root@bogon~]#lsepel-release-6-8.noarch.rpm[root@bogon~]#rpm-ivhepel-release-6-8.noarch.rpm #或yum-yinstallepel-release[root@bogon~]#yuminstallfail2ban-y复制ja......
  • Nginx 实战-01-nginx ubuntu(windows WSL2) 安装笔记
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 解决删除文件后 WSL2 磁盘空间不释放的问题
    Tags:#wsl#wsl2#windows今天突然发现 C 盘快满了,想起来之前把 Docker 容器的数据持久化到了 WSL2 的某个目录下,于是就想着把不需要的文件清理了。但清理完毕之后我发现 C 盘的剩余空间并没有变大,非常的奇怪。后来我在网上搜索了很久,终于找到了原因和解决方法。1分析......
  • 基于SSH远程访问WSL2(非长期稳定版本)
    to2024/05/31目标使笔记本可以在同一局域网下访问主机的WSL2。部署环境HOST-OS:Windows10,WSL2(Ubuntu20.04)REMOTE-OS:Windows10VSCode-EXTENSION:WSL,Remote-SSH部署过程(主要参考[1,2])WSL2所在主机需要进行的操作:WSL2-bash更新openssh-server:sudoa......
  • HTML20_web概念1
    一、web概念概述1、JavaWeb:使用Java语音开发基于互联网的项目2、软件架构:1.C/S:Client/Server客户端/服务器端 *在用户本地有一个客户端程序,在远程有一个服务器端程序 *如:QQ,迅雷... *优点: 1.用户体验好 *......
  • 洛谷 P8614 [蓝桥杯 2014 省 A] 波动数列 的题解
    题目大意求满足和为sss且ti=......