显然我们可以先把len(Ti)+len(Tj)的值先算出来,再把LCP减去。所有len(Ti)+len(Tj)的值为n*(n-1)*(n+1)/2,这个随便在纸上画一画就可以算出来的。 接下来问题就是如何把LCP减去。我们先用后缀数组把height求出来,当有一段区间l~r,height[i]为he ...
分类:
编程语言 时间:
2016-04-04 01:29:08
阅读次数:
331
题目链接: https://vijos.org/p/1926 题目大意: 给n个数(n<=100 000),求任意区间的最大值异或次大值的最大值。 题目思路: 【模拟】【单调栈】 我们维护一个严格单调递减队列,存放当前的数字,初始为前两个数字。 每当加入新的元素时,依次与栈头的元素比较,每次比较更新 ...
分类:
其他好文 时间:
2016-04-01 06:27:25
阅读次数:
136
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506 题目的意思其实就是要找到一个尽可能大的矩形来完全覆盖这个矩形下的所有柱子,只能覆盖柱子,不能留空。 我们求得的面积其实就是Max{s=(right[i] - left[i] + 1)*height
分类:
其他好文 时间:
2016-03-19 15:59:26
阅读次数:
274
题意:求解一串不出现数学公式只含'+','-','*','/', '(' , ')'的计算表达式,输出结果; 其中'/'是带小数的除法。并且输入的数值位double型,若是输入的运算符有误,或者出现除0错误,则直接输出intput error. 输入时除数值之间不能出现空格外,其他地方均能有空格。并
分类:
其他好文 时间:
2016-03-19 14:20:46
阅读次数:
138
Bad Hair Day 题意:给n(n <= 800,000)头牛,每头牛都有一个高度h,每头牛都只能看到右边比它矮的牛的头发,将每头牛看到的牛的头发加起来为多少? 思路:每头要进栈的牛,将栈顶比其矮的牛出栈,因为这些牛都没有机会看到更后面的牛了,所以出栈;这时加上栈中的元素个数即可;
分类:
其他好文 时间:
2016-03-19 01:01:58
阅读次数:
208
这个题就是给你一串连续的矩形, 每个矩形的宽度为1, 高度给定, 选定连续的一串矩形, 其高度是所有矩形高度中的最小值,宽度为选定的, 问怎么选能使矩形的面积最大?我们以一个矩形为中心,并设这个矩形的高度最小, 分别向两边延生, 那么此时的最大面积就是a[i] * (R[i]-l[i]+1), 代码
分类:
其他好文 时间:
2016-03-16 16:58:06
阅读次数:
124
简单列了一点 1.1 基本数据结构 1. 数组 2. 链表,双向链表 3. 队列,单调队列,双端队列 4. 栈,单调栈 1.2 中级数据结构 1. 堆 2. 并查集与带权并查集 3. hash 表 自然溢出 双hash 1.3 高级数据结构 1. 树状数组 2. 线段树,线段树合并
分类:
其他好文 时间:
2016-03-14 21:46:22
阅读次数:
157
题意很简单,求两个字符串长度大于等于K的子串个数 一开始还是只会暴力。。发现n^2根本没法做。。。看了题解理解了半天才弄出来,太弱了。。。 思路:把两个字符串连接后做一次后缀数组,求出height 暴力的想法自然是枚举第一个子串的起始位置i和第二个子串的起始位置j,肯定会T的 看了题解才知道有单调栈
分类:
编程语言 时间:
2016-03-13 00:44:16
阅读次数:
285
将分组计划按照$k$从小到大排序,维护一个单调栈,每个元素为一个矩形,按最底下元素从高到低排列,栈顶最低。 每次加入一个矩形可选区域,维护单调栈,可以往回合并。 然后将所有最低点不满足的矩形取出,合并后放回。 每次考虑栈顶区域,将它取到和下一个矩形底边一致时合并。 可持久化线段树维护,时间复杂度$O
分类:
其他好文 时间:
2016-03-10 14:39:19
阅读次数:
184
题目给一个01矩阵,求最大的1子矩阵。 先用dp预处理出每一行的每一列的1能向上按连续的1延伸多少,然后枚举每一行作为子矩阵的底,那样对于每一行的答案就是POJ2559这个经典问题了。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorit
分类:
其他好文 时间:
2016-03-01 20:35:46
阅读次数:
216