题目描述

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

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

输入格式:

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

输出格式:

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

输入样例:
9
8 4 2 5 3 9 1 6 7
输出样例:
4

思路解析:

首先记录一下这道题学到的有关set的知识点:

函数 作用
upper_bound(k) 寻找 大于k的第一个元素位置
lower_bound(k) 寻找 大于或等于k的第一个元素位置
erase() 删除元素

这道题以题面给的例子来分析,{8,4,2,5,3,9,1,6,7}按顺序进入轨道。
①首先8进入,因为之前轨道没有任何列车,所以8就直接占用一个轨道a;
②接下来分配4,因为结果要从高到低出轨道,所以每个轨道的列车序号从头到尾也应该呈递减,4可以进入8的轨道a,此时轨道a的末尾元素为4;
③2进入轨道a,a轨道末尾元素为2;
④现在5要分配轨道,但现在有的轨道a末尾元素是2,若5进去则不符合每个轨道都呈递减趋势,所以可知此时5应该去另一条轨道b;
⑤现在a,b轨道末尾元素分别为2,5,故按照递减原则3应该去轨道b,此时b末尾元素变为3;
⑥a、b末尾元素:2,3,此时两个轨道都不符合递减,9应该去新开的轨道c;
⑦a、b、c末尾元素:2,3,9,此时1可去a或b;
⑧6进入轨道c,c末尾元素为6;
⑨a、b、c末尾元素:2,3,6, 7不符合三个轨道,故另开一个轨道d,所以样例输出为四条轨道。

经过上面的分析可知,当一个列车判断进入哪一个轨道时,应该是判断轨道的末尾元素是否大于要插入的列车序列,故不用存每个轨道的所有列车序列,只需要存每条轨道的末尾元素,故使用set容器比较方便,且查找末尾元素可以用set容器的upper_bound()函数
当有列车插入到非空轨道时,先用upper_bound()函数找到非空轨道的末尾元素并删除,再插入新列车的值即可。

#include<bits/stdc++.h>
using namespace std;
int main() {int n, num;cin >> n;set<int>s;for (int i = 0; i < n; i++) {cin >> num;if (s.upper_bound(num) != s.end()) {s.erase(s.upper_bound(num));}s.insert(num);}printf("%d", s.size());
}

天梯赛L2-014 列车调度(set和简单贪心)相关推荐

  1. 团体程序设计天梯赛-L2组

    团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...

  2. 团体程序设计天梯赛 L2 题目合集

    前言 发现自己还能再参加一次天梯赛,在高兴之余,决定把在赛前将所有的天梯赛真题过一遍,希望自己可以取得理想的成绩.目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目. 本来想 L2 的题目都写个 ...

  3. 【L2-020 功夫传人】天梯赛L2系列详解

    天梯赛L2-020 功夫传人 题目详情: 思路: 这个题目的看着就感觉需要深搜一下,不妨将样例画出来,思路就突然涌来了.很明显的一道深搜的题目: 题目刚开始输入的一行信息整体的信息:宗门人数,祖师爷功 ...

  4. 【L2-022 重排链表】天梯赛L2系列详细解答

    天梯赛L2-022 重排链表 题目详情: 输入样例: 00100 6 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 6823 ...

  5. 【L2-040 哲哲打游戏】天梯赛L2题集

    天梯赛L2-40 题目详情: 思路: 先来一张我自己的手写解析图: (字比较丑,不过呢没有对样例推到完整,这种东西最好自己推一遍哈) 我感觉想清楚这三个问题就很有思路啦: 1.开始地址是什么? 2.如 ...

  6. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  7. 【L2-019 悄悄关注 】天梯赛L2系列详解

    天梯赛L2-019 悄悄关注 题目详情: 输入样例1: 10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao 8 Magi 50 Pota 30 L ...

  8. 【L2-030 冰岛人】天梯赛L2系列详解

    天梯赛L2-030 冰岛人 题目详情: 思路: 先搞清楚题目要求我们干什么? 直接看输出格式部分,四种情况:异性,同性,有无共同祖先,是否在名单内. 1.判断性别:如果是维京人那么通过性别后缀,否则通 ...

  9. 【L2-024 部落】天梯赛L2系列详解

    天梯赛L2-024 部落 题目详情: 输入样例: 4 3 10 1 2 2 3 4 4 1 5 7 8 3 9 6 4 2 10 5 3 7 输出样例: 10 2 Y N 思路: 很明显的并查集的一道 ...

  10. 【L2-034 口罩发放】天梯赛L2详解

    天梯赛L2-034 口罩发放 题目详情: 思路: 输入要求很长,猛然一看非常没有思路.但是写题的感觉还是有的.怎么写呢?我是从筛选信息一步一步入手的. 1.首先:这么长的信息,以我的水平,最好用结构体 ...

最新文章

  1. SOJ 8064 Whack the Groundhog
  2. git切换到远程分支
  3. windows系统自动化设置
  4. asp.net core 6 新特性,支持HTTP/3 端点发布
  5. 前端学习(2870):Vue路由权限『前后端全解析』1
  6. debian 编译linux内核源码,Debian下为本机编译内核模块的方法
  7. 删除a标签下面的横线
  8. 对pushState、replaceState和onpopstate一点使用
  9. glassfish 是oracle的,GlassFish“百天”小版本 彰显Oracle的大功力
  10. ubuntu安装gcc和g++
  11. 2022年第十四届电工杯赛题分析
  12. 整理iOS9适配中出现的坑(图文)
  13. Linu下安装ffmpeg
  14. Panasonic: FP-X0 L30R 使用 FPWIN GR7 通讯及编程
  15. STM32-RTC实时时钟-毫秒计时实现
  16. VAE背后的哲学思想及数学原理
  17. 架构之:serverless架构
  18. 在Windows系统中安装Go语言
  19. [电脑驱动向]笔记本键盘失灵,电脑插耳机没反应,不要着急拿去物理维修,可能是bios驱动需要更新
  20. 三星支付存在漏洞可导致黑客进行交易劫持

热门文章

  1. 浅谈社区电子商务的发展及其技术应用
  2. 子元素div高度不确定时父div高度如何自适应
  3. WPF学习笔记(数据绑定篇3)
  4. MySQL_存储引擎
  5. vue 中 provide 和 inject 共享数据
  6. Linux内核(1)--从开机到main函数
  7. OpenCV训练SVM模型并预测的完整过程
  8. 7-11 玩转二叉树 (25 分)
  9. JAVA编写的火车票售票系统
  10. php 100万数据,关于批量插入数据之我见(100万级别的数据,mysql)