考虑状态转移方程:
- 删除(因为
的增加) 中小于 的元素。 - 在(因为
的增加)添加元素之前,删去 中比添加的元素更劣的元素。设当前添加的元素为 ,则 中一个更劣的元素 需满足 。- 原因在于由于
更早被添加,必然满足 ,那么随着 的增加, 需要比 更早地被删除,因而在 能存在在 中的剩余时间里,它永远不能成为被选择的元素。
- 原因在于由于
- (因为
的增加)添加元素。
在需要进行状态转移时,取出队列中存在的最早的添加的元素。 考虑队列q[M]
以及上下界变量l
和r
。则:
l <= r
表示队列中有存在元素。- 初值设为
l=1
,r=0
,表示队列中不存在元素。 - 对
q[++r]
赋值是在队尾添加元素。 - 在队列中存在元素的情况下,
q[l]
是取出队首元素,q[r]
是取出队尾元素。 - 在队列中存在元素的情况下,
l++
表示删除队首元素;r--
表示删除队尾元素。
(存疑)更一般地,状态转移方程可以推广为: