L2-014. 列车调度【set】

通过分析,要使轨道数量最小,需确保每次新进入的数值能替换现有轨道上的更大数值,否则新建轨道。利用Set的lower_bound()函数,可以高效地判断并更新轨道,最终Set的大小即为所需的最小轨道数。样例输入8 4 2 5 3 9 1 6 7,只需4个轨道即可完成排序。
摘要由CSDN通过智能技术生成

题目:列车调度

思路:

如何能使轨道数最少?就是每次进入一个数字,看存在的轨道的是有没有比当前值大的,大的话把当前值替换当前轨道即可,如果没有就需新增轨道!

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

1 2 4 8

3 5

6 9

7

需用4个轨道即可按递减输出了!

所以按以上思路:输入一个值,看当前所有轨道是否有大于前前值的,有的话替换当前轨道值,否则新增轨道

这里需要用set集合实现,否则超时了。。。因为set集合中有一个函数:lower_bound() 可以查出当前集合中有没有比要查的值大的值,有的话直接返回此值,这样我们就可以将此值删除,然后将当前值加入集合,最后的集合长度即为轨道数了!

参考:心向阳光2014博客

代码:

#include <iostream>
#include <cstdio>
#include <set>
#include <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值