数据结构:单调栈、普通栈
文章平均质量分 90
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
POJ - 3415 Common Substrings 后缀数组+单调栈+前缀和
题意:给出两个字符串,求出它们的相同的长度至少为k的子串的个数。 后缀数组+单调栈+前缀和 把a、b这两个字符串用'#'连起来,然后求出它们的后缀数组,然后后缀ai和后缀bi的的满足要求的子串的个数是 max(0, LCP(suffixai, suffixbj) - k + 1); 根据后缀数组的性质,也就是后缀i后缀j的LCP 等于这段height的最小值。 因此对于每个ai考虑ai之前的所有bi, sum{max(0, LCP(suffixai, suffixbj) - k + 1)} rank[ai]原创 2017-02-16 17:33:21 · 860 阅读 · 0 评论 -
Codeforces Round #420 (Div. 2) C. Okabe and Boxes 栈+last标记+贪心
题意:有1~n这n个数,给出一个stack的push和pop的序列,要求在执行的过程中用尽可能少的重排次数,使得能够使pop的顺序是1~n的顺序。 栈+last标记+贪心 1~2*n个操作,用一个last标记最近一次重排的位置,初始为last = 0。 然后用一个栈表示上一次重排后push如的元素的栈结构。 每次remove,如果当前需要pop的cnt == top则直接从stack pop掉, 否则,如果栈空,且mp[cnt]出现的位置在last之前,则可以直接pop, 不然则需要一原创 2017-06-26 19:38:08 · 878 阅读 · 0 评论