博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PATL2-014 列车调度(二分查找)
阅读量:2222 次
发布时间:2019-05-08

本文共 710 字,大约阅读时间需要 2 分钟。

题目链接:

在做这个题的时候,首先要知道在STL中有可以实现二分查找的快速函数,常使用的有四种,分别是:

  • lower_bound(): 找到大于等于某值第一次出现的迭代器位置;
  • upper_bound():找到大于某值第一次出现的迭代器的位置;
  • equal_range():z找到等于某值迭代器范围;
  • binary_search(): 在有序序列中确定,给定元素是否存在;

这个题就是不断更新当前所在数组的最小值,如果输入的值,比当前元素的最大值大,数组就多添加一个数,如果比最大的值小,就使用二分查找,找到第一个大于这个值的元素的位置,并且更新这给位置的数组,使其为当前输入的数,最后统计数组的元素个数,就是要求的答案。

代码如下:

int n; int a[maxn];int main(){	ios::sync_with_stdio(false);	cin >> n;	int k;	int t = 0;	for(int i = 0; i < n; i++){		cin >> k;		if(i == 0) a[t++] = k;		else{			if(a[t-1] < k){				a[t++] = k;			}else{				int l = lower_bound(a,a+t,k)-a;				a[l] = k;				//cout << l << endl;			}		}	}	/*for(int i = 0; i < t-1; i++){		cout << a[i] << " ";	}	cout << a[t-1] << endl;*/	cout << t << endl;	return 0;}

 

转载地址:http://lqpfb.baihongyu.com/

你可能感兴趣的文章
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
Spring源码剖析8:Spring事务概述
查看>>
Spring源码剖析9:Spring事务源码剖析
查看>>
重新学习Mysql数据库1:无废话MySQL入门
查看>>
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
查看>>
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
查看>>
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
查看>>
探索Redis设计与实现8:连接底层与表面的数据结构robj
查看>>
探索Redis设计与实现7:Redis内部数据结构详解——intset
查看>>
探索Redis设计与实现9:数据库redisDb与键过期删除策略
查看>>