7-55 列车调度 (25 分)

简介: 7-55 列车调度 (25 分)

7-55 列车调度 (25 分)


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


aa1aa6473a6dcf6df14585c9b74f4027.jpg

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


输入格式:


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


输出格式:


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


输入样例:


1. 9
2. 8 4 2 5 3 9 1 6 7


输出样例:


4

 

#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N], top, n, x;
int l, r, mid;//里面需要用到二分
int main() {
    cin >> n;
    while (n--) {
        cin >> x;
        if(top == 0 || a[top - 1] < x) {
            a[top++] = x;
        }
        else {
            l = 0, r = top -1;
            while (l <= r) {
                mid = (l + r) / 2;
                if(a[mid] > x) {
                    r = mid -1;
                }
                else {
                    l = mid + 1;
                }
            }
            a[mid] = x;
        }
    }
    cout <<top;
    return 0;
}


c++ stl


#include<iostream>
#include<set>
using namespace std;
int main()
{
    int num,n;
    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);
  }
    cout<<s.size()<<endl;
    return 0;
}


rbegin():


c.begin() 返回一个迭代器,它指向容器c的第一个元素

c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置

c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素

c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置


upper_bound():


upper_bound是找到大于t的最小地址,如果没有就指向末尾

lower_bound是找到大于等于t的最小地址


set::erase():


erase() 迭代器的参数必须是一个指向容器中元素的、有效的、可解引用的迭代器,因此需要确保它不是容器的结束迭代器。这个版本的 erase() 函数会返回一个指向被删除元素的下一个位置的迭代器,如果删除的是最后一个元素,那么它就是结束迭代器。


调用unordered_set容器的成员函数clear()可以删除它的全部元素。成员函数erase()可以删除容器中和传入参数的哈希值相同的元素。另一个版本的erase()函数可以删除迭代器参数指向的元素。


目录
相关文章
|
6月前
|
新能源 调度
日前日内多阶段多时间尺度源荷储协调调度(matlab代码)
日前日内多阶段多时间尺度源荷储协调调度(matlab代码)
|
6月前
|
调度
视频讲解|日前日内多阶段多时间尺度源荷储协调调度
视频讲解|日前日内多阶段多时间尺度源荷储协调调度
|
6月前
|
算法 前端开发
选择建筑的方案数
选择建筑的方案数
39 0
|
数据挖掘 调度
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
109 0
【电动车】电动汽车两阶段优化调度策略(Matlab代码实现)
|
机器学习/深度学习 算法 安全
【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)
【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)
162 0
|
调度 C语言 C++
PTA L2-014 列车调度(25分)
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度? 输入格式: 输入第一行给出一个整数N (2 ≤ N ≤105),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。 输出格式: 在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。
136 0
|
算法 调度
操作系统学习(三):浅析比例份额调度——彩票调度和步长调度
比例份额(proportional-share)算法基于一个简单的想法:调度程序的最终目标,是确保每个工作获得一定比例的 CPU 时间,而不是优化周转时间和响应时间。
562 0
|
调度
L2-014 列车调度 (25 分)(二分)
L2-014 列车调度 (25 分)(二分)
180 0
L2-014 列车调度 (25 分)(二分)
L1-069 胎压监测 (15 分)
L1-069 胎压监测 (15 分)
173 0
L1-069 胎压监测 (15 分)