一类基于单调性的题目
Posted caturra
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一类基于单调性的题目相关的知识,希望对你有一定的参考价值。
直接贴题目吧
POJ - 3061
题意:求区间连续和大于等于(S)的最小长度
这是一道A了一年有多的题目..(感觉我变老了
朴素做法:枚举每一个左端点(l),找出最近的合法右端点(r),(O(n^2))更新答案
无脑做法:直接二分答案,(O(nlogn))
尺取法:从朴素做法中尝试优化,如果枚举的(l)中(r)是最近的解,那么下一步的(l+1)中(r‘)只增不减
(∵sum[r-1]-sum[l]<S,sum[r-1]-sum[l+1]<S∴r‘≥r)
由此可以简单地(O(n))解决
https://paste.ubuntu.com/p/hzXCHWW46h/
luogu - P1638
题意:求恰好包含m种数字的最小区间长度
对于找到某个(l)的最小解([l,r])来说,因为[l,r-1]不可能有m种,所以([l+1,l+1...r-1])也不可能有m种,因此l增加时r也单调不降
https://paste.ubuntu.com/p/BWtkvWNffG/
UVA - 11572
题意:求不包含重复数字的最大区间长度
分析方法一个套路,另外这种更新数值的map不要作死用count()
https://paste.ubuntu.com/p/HXxz6c3S8j/
AtCoder - 4142
题意:求(a[l]⊕a[l+1]⊕...⊕a[r]=a[l]+a[l+1]+...+a[r])的最大区间长度
(a⊕b=a+b)当且仅当每一位相加不超过1
那么就是说每一位上尺取挑交集更新长度即可
合并到单次操作也是r单调不降,因为r+1可能存在更优的解使得某一位填上1,如果不存在也就是r,而r-1因为l的减少是绝对不会成为更优解
https://paste.ubuntu.com/p/DXNK35XPpr/
luogu - P..
吃完饭再更
以上是关于一类基于单调性的题目的主要内容,如果未能解决你的问题,请参考以下文章