列车调度C语言数据结构,数据结构——列车调度

列车调度C语言数据结构,数据结构——列车调度题目链接:https://pintia.cn/problem-sets/1045870129681440768/problems/1045870197130047495#p-2题目大意:给你一列火车,上面有表号,问给你几个火车隧道,能使车厢从大到小。一道有思维结构的模拟题。先说一下核心解体思想:就是一个序列里,有多少个从大到小排好序的序列,求个数。朴素的模拟思想,先读入一个数组,从头到尾判断,含有…

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

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

题目链接:https://pintia.cn/problem-sets/1045870129681440768/problems/1045870197130047495#p-2

题目大意:给你一列火车,上面有表号,问给你几个火车隧道,能使车厢从大到小。

一道有思维结构的模拟题。

先说一下核心解体思想:就是一个序列里,有多少个从大到小排好序的序列,求个数。

朴素的模拟思想,先读入一个数组,从头到尾判断,含有多少个,从大到小的序列,用used数组标记使用,但是这种做法会超时。

这里先给出错误代码:

#include

using namespace std;

const int INF=1e6+10;

const int maxn=100000+10;

int a[maxn];

int main()

{

int n; scanf(“%d”,&n);

for(int i=0;i

int num=n,exnum=0;

while(num>0)

{

bool flag=true;

int t;

for(int i=0;i

{

if(a[i]!=INF)

{

if(flag)

{

num–;

exnum++;

t=a[i];

a[i]=INF;

flag=false;

}

else if(a[i]

{

t=a[i];

a[i]=INF;

num–;

}

}

}

}

printf(“%d\n”,exnum);

return 0;

}

超时之后开始简化自己的思想,再网上看到了二分思想A题,但总感觉还有更为简单的方法。

想来想去最后使用的,使用数组储存最一个隧道末尾数字的大小+二分;

下面给出AC代码,代码下面有一些具体解释:

#include

using namespace std;

const int INF=1e6+10;

const int maxn=100000+10;

int a[maxn];

int main()

{

int n; scanf(“%d”,&n);

int len=1;

for(int i=0;i

{

int t; scanf(“%d”,&t);

if(i==0) a[0]=t;

else

{

if(t>a[len-1])

{

a[len++]=t;

}

else

{

int pos=lower_bound(a,a+len,t)-a;

//cout<

a[pos]=t;

}

//sort(a,a+len);

}

}

printf(“%d\n”,len);

return 0;

}

可能会有疑问,lower_bound二分函数,只有在数组排好序的时候才能使用,但是代码中的排序函数是被注释掉的,而且去掉注释会超时,但是仔细想想就会知道,我们用来每次更新火车隧道末尾数字的时候,总是选择的跟他的值差距最小的(因为lower_bound函数总是找到的是第一个值),这个过程中可以保证数组是从小到大排好的,从而省略掉了排序的函数。

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

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

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


相关推荐

  • flowable 流程引擎总结

    flowable 流程引擎总结最近公司使用Flowable开发了自己的OA系统,因此对Flowable的相关内容进行如下总结一、Flowable是什么目前最新版是Flowable6.4.2(2019年07月26日)官网地址:https://www.flowable.org/github地址:https://github.com/flowableFlowable是一个使用Java编写的轻量级业务流程引擎,使用ApacheV2license协议开源。2016年10月,Activiti工作流引.

    2022年10月20日
    5
  • ADB安装卸载应用[通俗易懂]

    ADB安装卸载应用[通俗易懂]一、目的使用adb快速安装apk手机app使用adb卸载app(卸载手机自带应用,root下)二、操作2.1adb安装apk手机USB连接电脑(连接成功进入adb)执行adbinstall-r<apk绝对路径>只需要将文件拉近cmd窗口中便会自动解析路径(最好将apk放到c盘)手机中确认安装即可…

    2022年5月13日
    72
  • Micron(美光)内存颗粒的命名规则,7lk17d9PTK,MT29F2G08ABAEA(矿机自带)

    Micron(美光)内存颗粒的命名规则,7lk17d9PTK,MT29F2G08ABAEA(矿机自带)三四十买了一个矿机主板,ddr3的芯片和flash的型号认不全,找了一些资料,如下1.DDR3芯片的识别ZYNQ7000系列ddr最多支持1G,这两个拼一起就是500M一半的样子我们随便找一个Micron的DDR3或者SPINANDFLASH,会发现丝印不是具体型号,真他妈奇怪!!!!!如:看了都有不知道什么型号的DDR芯片以前自己懵剩剩的,还好公司的硬件工程师帮我解答了多年以来的困惑:https://www.micron.com/support/tools-and-utilities

    2022年6月22日
    378
  • flume使用教程_三阶魔方初级入门教程详细图解

    flume使用教程_三阶魔方初级入门教程详细图解文章目录1.Flume概述1.1Flume定义1.Flume概述1.1Flume定义  

    2025年8月1日
    1
  • USB 转 RS-485 / 422 接口转换器

    USB 转 RS-485 / 422 接口转换器USB转RS-485/422接口转换器1.USB转RS-485/422接口转换器2.通信连接图USB<=>RS-422切换USB<=>RS-485切换3.连接器和信号4.故障与排除5.6位接线柱<==>5位接线柱References…

    2022年5月1日
    85
  • opencv无法读取图片_opencv无法读取图片

    opencv无法读取图片_opencv无法读取图片使用一下代码读取一张图片失败(不管是绝对路径还是相对路径,都失败),工程运行都没问题,就是图片读取失败。//读入一张图片(游戏原画)Matimg=imread("hehe.jpg"); if(!img.data)//判断图片调入是否成功return-1;//调入图片失败则退出//创建一个名为"游戏原画"窗口…

    2022年10月14日
    3

发表回复

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

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