列车调度 (lower_bound)

来源:互联网 发布:10月非农数据预测 编辑:程序博客网 时间:2024/05/16 07:12

题意:有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?

lower_bound(首地址,尾地址,需要查找的元素)- 首地址 :寻找大于等于一个数的位置

upper_bound(首地址,尾地址,需要查找的元素)- 首地址 : 寻找大于一个数的位置

返回地址 加*是数值

#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <cmath>#include <iostream>#include <set>#include <vector>#define INF 0x3f3f3f3fusing namespace std;const int N=100007;int a[N];int ri[N];int main(){    int n;    scanf("%d",&n);    int k=0;    for(int i=0;i<n;i++)    {        scanf("%d",&a[i]);        if(a[i]<ri[k-1])        {            int pos=(int)(lower_bound(ri,ri+k,a[i])-ri);            ri[pos]=a[i];        }        else ri[k++]=a[i];    }    printf("%d\n",k);}
0 0