
单调栈
bestFy
世界上最最最渣的oier.
展开
-
51nod1423 最大二“货”
题面在这里我们维护一个单调递减的栈,然后发现每次一个数进栈的时候,那些弹出栈的数都对应某一个区间的次大值(最大值就是要进栈的数),所以我们每次弹栈的时候更新一下答案就好了。然后这个只是次大值在最大值之前的情况,之后的情况再把a数组反过来操作一遍就行。/************************************************************* P原创 2017-11-15 17:04:12 · 401 阅读 · 0 评论 -
51nod1437 迈克步
题面在这里很裸的单调栈。。计算出每个数作为最小值的区间最大长度len,然后更新ans[len],最后倒着更新一遍ans[]就好了。很坑地要加读优输优。/************************************************************* Problem: 51nod 1437 迈克步 User: bestFy Language:原创 2017-11-15 19:44:50 · 317 阅读 · 0 评论 -
bzoj3039: 玉蟾宫
题面在这里 呐这已经是水题again and again and again了呜哇...做法: 单调栈。和51nod1158全是1的最大子矩阵一样的。。。 嘛单调栈的原理我就不讲了叭= =毕竟这也不是算法详解QwQ/************************************************************* Problem: bzoj 3039 玉蟾宫原创 2017-12-15 18:54:43 · 265 阅读 · 0 评论 -
poj3415 Common Substrings
题面在这里题意:求两个字符串中长度不小于k的公共子串个数。做法:即求sigma(两个字符串的后缀的lcp-k+1|lcp>=k)。 首先用一个没有出现过的字符拼接两个串。跑出sa和height.两个后缀的lcp为在它们排名之间的height的最小值。 所以我们可以对于某一个height,求出它作为最小值的一个区间l[i],r[i],然后最后对于所有>=k的heigh原创 2018-01-18 17:35:30 · 291 阅读 · 0 评论