购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.4 单调队列

■ 403004 密钥

【题目描述】密钥(key)

有一种密钥:给出一个长度为 n 的序列 A A 中所有长度为 m 的连续子序列的最大值即密钥。例如 n =7,有数组{8,7,1,5,9,3,6},当 m =3时,则密钥为87999,获取密钥的过程如图3.5所示。

图3.5

【输入格式】

第一行为两个整数,即 n m (1< n <90000)。

第二行为 n 个整数。

【输出格式】

输出密钥值。

【输入样例】

7 3

8 7 1 5 9 3 6

【输出样例】

87999

【算法分析】

要高效率解决此题,一般会使用单调队列。顾名思义,单调队列是使队列中的元素保持单调递增(减),而保持的方式就是通过“插队”把队尾破坏了单调性的元素全部挤掉。可以这么想象:有一长串队伍排队买票,忽然来了一个人高马大的家伙,一看这么长的队伍,心情急躁,于是就从队尾开始,看到好欺负的就将其赶出队列……如此一路向前,直到遇到比他更强壮的家伙为止。

本题样例的运行过程如表3.1所示。

表3.1

参考程序如下。 f1T8jDFXtPkvTw9vWPal6AVf/mHApYbXWOWt8seYBANRdAd4hrtwol5+e3QQSST0

点击中间区域
呼出菜单
上一章
目录
下一章
×