PTA 7-13 列车调度 (25 分) C语言和C++实现(二分查找)
7-13 列车调度 (25 分)
火车站的列车调度铁轨的结构如下图所示。
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?
输入格式:
输入第一行给出一个整数N (2 ≤ N ≤10
5
),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。
输出格式:
在一行中输出可以将输入的列车按序号递减的顺序调离所需要的最少的铁轨条数。
输入样例:
9
8 4 2 5 3 9 1 6 7
输出样例:
4
C语言解题思路:
建立一个数组,当输入一个列车序号*时开辟轨道,再输入一个列车序号**,在所有轨道中查找比列车序号**大的列车序号,替换它,如果没有比它大的,则另开辟一个轨道。用top记录开辟轨道的数量。
如图:
最上面的轨道列车序号一定是最大的,用二分查找不然会超时。
C语言实现:
#include<stdio.h>
int a[1000000];
int main()
{int n;scanf("%d",&n);int i,m,j,top=0;for(i=0;i<n;i++){scanf("%d",&m);if(top==0||a[top-1]<m){ //当top==0时,开辟轨道,当输入的列车序号比最上的轨道列车序号还大时,开辟轨道a[top++]=m;}else //二分查找{ int high=top-1,low=0,mid;while(low<=high){mid=(low+high)/2;if(a[mid]>m){high=mid-1;}else{low=mid+1;}}//a[mid]=m;a[low]=m;}}printf("%d",top); //轨道数
}
C++实现:
#include <bits/stdc++.h>
using namespace std;
int main()
{int n,m;set<int> a;scanf("%d",&n);for(int i=0;i<n;i++){cin>>m;if(a.upper_bound(m)!=a.end()) //set自带二分查找函数a.erase(a.upper_bound(m));a.insert(m);}cout<<a.size();return 0;
}
PTA 7-13 列车调度 (25 分) C语言和C++实现(二分查找)相关推荐
- 【PTA】5-10 列车调度 (25分)
5-10 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一 ...
- 7-55 列车调度 (25 分)
7-55 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条 ...
- 【CCCC】L2-014 列车调度 (25分),贪心,set维护序列
problem L2-014 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入 ...
- 5-3 列车调度 (25分)
5-3 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条 ...
- 5-10 列车调度 (25分)
5-10 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨 ...
- 5-10 列车调度 (25分) set OR 最长上升子序列
5-10 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨 ...
- L2-014 列车调度 (25 分)
L2-014 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意 ...
- 7-7 列车调度 (25分)
7-7 列车调度 (25分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨道 ...
- 7-6 列车调度 (25 分)
7-6 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条轨 ...
最新文章
- 优先发展智慧旅游与智慧交通领域
- altera fpga 型号说明_基于FPGA的USB2.0接口通信
- java数组类型转换_java数据类型转换和数组总结
- Windows Server 2008 系统上c#读取Excel遭遇“用户代码未处理 ComException”错误
- mysql 查看表格scott_mysql查询学习第一天,针对scott
- 襄阳社区招聘计算机考什么时候,襄阳招聘网格员什么时候报名?
- Asp.net中Bind()和Eval()的区别
- LeetCode之移除元素
- 『摄影欣赏』好萌了!12幅可爱的婴儿照片【组图】
- redis php 使用实例
- 破解tinypng文件上传的限制
- 这几本游戏开发书籍推荐给为未来的游戏工程师
- 矩阵转置+矩阵相加(三元组)
- 海思Hi3519模块开发板最新资料介绍
- Go关键字--chan
- (三)ArcGIS Server之发布要素服务
- 阿里巴巴算法岗编程题:菜鸟仓库
- UVA 1600 Patrol Robert 巡逻机器人 (启发搜索BFS)
- 事业单位计算机专业能力测试考什么内容,事业单位职业能力测试考什么
- 4K Video Downloader (4K视频下载器)V3.0.40
热门文章
- 手持PDA无线打印 扫描一体方案-PDA系统程序
- 【R实验.9】主成分和因子分析
- 风剑分享“站在上帝视角看数据”,点燃企业大数据梦想与思潮
- P1873 [COCI 2011/2012 #5] EKO / 砍树
- vue : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
- Candence学习篇(7)allegro pcb editor 17.2如何打开旧版本.brd和.dra文件等
- 在Unity实现Canny边缘检测
- 如何添加论文参考文献
- android获取imei需要read_phone_state吗,Firemonkey android read_phone_state运行时权限要求获取IMEI...
- 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?