最近学了二分法的应用和单调队列,所以看了一些关于单调队列的例题,二分的题目只看了几道但不多。准备五一假期认真学习一下这两块知识,多见题型,多总结。
单调队列:
单调队列性质:
(1)队列中元素之间的关系具有单调性
(2)队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。
单调队列入队出队操作:
若新元素从队尾插入后会破坏单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单调队列。
单调队列的用处:
获取最优(最大、最小)值:访问首尾元素。
单调队列一般用于解决的问题:
需要得到当前的某个范围内的最小值或最大值的问题。
例如:求最大子序和:一个长度为n的整数序列,从中找出一段不超过m的连续子序列,使得整个序列的和最大。
二分法:
二分法是一个非常高效的算法。它常常用于处理单调区间上的极值问题。
简单的有像给你数学函数表达式,根据求导判断正负从而判断函数增减判断某一区间极值(这是与纯数学问题的题)
不太容易想到二分的是:给出问题中两个变量之间存在正比或反比关系,可对一个变量进行二分,进而求出另一变量的最优解。
还有一般求最小值的最大以及求最大值的最小问题,除了用dp解决,还可应用二分解决,例题中有很多。