【心得】单调队列

单调队列

其实是初二就学的,但是当时只是会做几道例题,没有总结规律,现在看入门经典时突然感觉以前学的时候太不仔细了,漏过很多细节,于是来填(wa)个坑。

先抄几道例题(其实例题都属于“滑动窗口”一栏,但其实思想一样,直接被我归纳为单调队列了)


1.Window 不解释

知道单调队列的应该都知道Window。

Window作为一道经典例题,体现了单调队列的基本特征

1.只关心最优解(要求前n个最优解请出门左拐找隔壁优先队列,单调队列的队列里可能只有1个答案)

2.允许在线更新(废话,不然我排个序不就完事了)

3.多快好省(所有没用的都被自动排除,而且均摊下来每次操作时间才常数)


2.Defense Lines,Uva1471

删掉一段连续的子序列,剩下的序列里最长连续递增子序列

先上个暴力

枚举删掉的子序列的头尾O(n2),统计长度O(n)

总复杂度n3

忘记说了,n范围200,000

233

所以怎么降?

首先很明显统计长度的n是不需要的,预处理一下就好了

还有n2

。。。

差点忘了主题单调队列(当然考试的话题目不会告诉你这道题是单调队列,但是看着滑动的一个东西就像)

树上并没有说这是单调队列,但我觉得这实际上还是换汤不换药,把各方面表现都很辣鸡(不但没有别人好还比别人死得早)的结果舍去,最后树上说复杂度为nlgn(为什么感觉像n,是不是哪漏算了)


原文地址:https://www.cnblogs.com/wanglichao/p/5561560.html