5-3 列车调度 (25分)

来源:互联网 发布:淘宝千人千面标签 编辑:程序博客网 时间:2024/05/21 11:20
5-3 列车调度   (25分)

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

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

输入格式:

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

输出格式:

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

输入样例:

98 4 2 5 3 9 1 6 7

输出样例:

4

其中只要会用algorithm函数库里的lower_bound函数就好。与之相对应的是upper_bound函数。

lower_bound(数组首地址a,数组尾地址a+n,要查找的数x)  返回的是比x大,或相等的第一个数的地址 ,根据英文本意,可以理解为从查找的位置开始,每一个比x小的都会跳过,直到找到不比x小的数为止。若找不到,返回数组位地址a+n

比如有个int a[10], 里面有8数{1,2,3,4,5,6,7,8 , 9 , 0}
要找比不比5小的第一个数
j=lower_bound(a,a+7,5)  则j==a+4,
要找不比7小的第一个数
j=lower_bound(a,a+7,7) 则j==a+6;
要找不比10小的第一个数
j=lower_bound(a,a+7,10) 则j==a+7;



代码如下

[cpp] view plain copy
  1. #include<cstdio>  
  2. #include<algorithm>  
  3. using namespace std;  
  4. int a[100005]={0};  
  5. int main()  
  6. {  
  7.     int n1,i,num=0,k,*j;  
  8.     scanf("%d",&n1);  
  9.     for(i=0;i<n1;i++)  
  10.     {  
  11.         scanf("%d",&k);  
  12.         j=lower_bound(a,a+num,k);   
  13.         *j=k;  
  14.         if(j==a+num)   
  15.         num++;  
  16.     }  
  17.     printf("%d\n",num);  
  18. }   
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 服务器密码忘记了怎么办 网吧电脑卡死了怎么办 局域网连接不上怎么办 电脑没有dns地址怎么办 无法连接版本服务器怎么办 登录游戏就死机怎么办 亿企薪税保没有绑定企业怎么办 众筹如果不成功怎么办 淘宝被投诉商标权怎么办 茅台贴标褶皱怎么办 ins取不了名字怎么办 ins密码忘了怎么办 ins不记得密码怎么办 ins账号被停用怎么办 电脑登录不上怎么办 电脑桌面密码忘记了怎么办 苹果电脑用户名忘记了怎么办 w7电脑忘记密码怎么办 电脑win10忘密码怎么办 win7账号被停用怎么办 淘宝号忘了怎么办 xp忘记系统密码怎么办 u盘忘记密码怎么办 mac系统密码忘记怎么办 电脑用户名密码忘记怎么办 win7用户名密码忘记怎么办 用户名密码忘记了怎么办 电脑用户名忘记了怎么办 win10系统忘记用户名怎么办 邮件不显示主旨怎么办 电脑被停用了怎么办 电脑密码被锁怎么办 拨号密码忘记了怎么办 xp忘记admin密码怎么办 wps表格不能编辑怎么办 微信号注销失败怎么办 微信无法注销怎么办 淘宝账号注销失败怎么办 12306忘记原账号怎么办 12306账号忘记了怎么办 宽带没账号密码怎么办