单调栈
twh233
嘻嘻
展开
-
codeforces 817D Imbalanced Array
传送门借用大犇的想法。题意:给出一组数,求所有连续子串的最大值与最小值差的和题解:从每个数可作为最大值被计算次数Maxki和最小值计算次数Minki入手,答案就是sum(Maxki*num[i]-Minki*num[i])那么如何计算Maxki和Minki呢?首先假设这个数num[i]是连续子串的第一位数,转载 2017-06-16 22:40:38 · 211 阅读 · 0 评论 -
单调栈 poj2796
传送门、题意:给你一段区间,需要你求出(在这段区间之类的最小值*这段区间所有元素之和)的最大值......单调栈的原理,它就是以某一个值为最小(最大)值,向这个值的两侧延伸,遇到大于它(小于它)的值,就将它延伸的范围扩大,当然,一般来说,要这样做的算法复杂度为o(n^2),但是借助栈这个玩意,维护其单调增(减),就可以在o(n)的时间复杂度解决这个问题。将一元素加入栈时原创 2017-06-23 23:40:28 · 299 阅读 · 0 评论 -
单调队列
单调队列(Monotone queue)是一种特殊的优先队列,提供了两个操作:插入,查询最小值(最大值)。它的特殊之处在于它插入的不是值,而是一个指针(key)(wiki原文:imposes the restriction that a key (item) may only be inserted if its priority is greater than that of the last原创 2017-08-18 19:02:06 · 278 阅读 · 0 评论 -
bzoj 2806 多个串匹配
题意:多个主串和多个询问串,每次询问将询问串分成多个连续子串,如果一个子串长度>=L且在主串中出现过就是熟悉的如果熟悉的字符串长度>=询问串长的90%就是熟悉的文章;求成为熟悉的文章的最大的L 主串建广义SAM然后二分L判断可行性使用DP判断L是否可行,一定要注意是长度不是数量,煞笔Candy?就看错题了len[i]表示i位置之前最大公共长度,和原创 2017-09-14 22:33:23 · 243 阅读 · 1 评论