码迷,mamicode.com
首页 > 其他好文 > 详细

一类基于单调性的题目

时间:2018-09-29 17:43:27      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:ast   超过   --   log   最小   line   tco   ref   a+b   

直接贴题目吧

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..

吃完饭再更

一类基于单调性的题目

标签:ast   超过   --   log   最小   line   tco   ref   a+b   

原文地址:https://www.cnblogs.com/caturra/p/9724735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!