题面: P2880 [USACO07JAN]平衡的阵容Balanced Lineup RMQ问题:给定一个长度为N的区间,M个询问,每次询问Li到Ri这段区间元素的最大值/最小值。 RMQ的高级写法一般有两种,即为线段树(并不很会╥﹏╥...)和ST表(一种利用dp求解区间最值的倍增算法) 定义:m ...
分类:
其他好文 时间:
2017-11-04 20:38:09
阅读次数:
171
突然又听说参加机竞的就几个人没停课,压力倍增(倍增算法。。。),我还是争取自习和晚自习都来机房吧,晚上再争取熬一熬夜。。。原以为可以各方面轻松兼顾,没想到如此紧张繁忙,希望自己能够熬到54天之后吧。其实我也不是没想过停课,可我的确不认为55days后我还能把课补起来(有个同学生病了要住20多天的院, ...
分类:
其他好文 时间:
2017-09-19 00:16:40
阅读次数:
150
现在来看倍增算法是非常好理解的。 直接放一篇blog写的挺好的:http://www.cnblogs.com/zinthos/p/3899725.html 虽然理论复杂度是$O(nlogn)$,但其中各种细节优化确实十分有必要的。 给自己放一个倍增的模板,有空填DC3的坑 ...
分类:
编程语言 时间:
2017-09-04 19:57:18
阅读次数:
127
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; int anc[20][N]; int deep[N]; int h[N]; void dfs(int o,int u,int w) { if(u!=o)deep[u]=deep[o]+1,h[u]=h[o] ...
分类:
编程语言 时间:
2017-07-30 15:47:27
阅读次数:
337
void build_sa(int m) { int *x = t, *y = t2; for(int i = 0; i = 0; i --) sa[--c[x[i]]] = i; for(int k = 1; k = k) y[p++] = sa[i] - k; for(int i = 0; i ... ...
分类:
编程语言 时间:
2017-07-29 21:32:05
阅读次数:
159
●之前学习过后缀数组的倍增算法,但也只是简单练了练倍增(O(n ㏒ n))。 ●如今再次开始后缀,借助罗穗骞的论文《后缀数组——处理字符串的有力工具》,练习了论文里那十三个例题,学习了里面所包含的后缀数组处理字符串的应用。 ●感觉收获不少,后缀倍增+后缀应用的代码能力提高了不少。 ●于此发上各题方法... ...
分类:
编程语言 时间:
2017-07-26 15:42:31
阅读次数:
186
RMQ问题:给定一个长度为N的区间,M个询问,每次询问Li到Ri这段区间元素的最大值/最小值。 RMQ的高级写法一般有两种,即为线段树和ST表。 本文主要讲解一下ST表的写法。(以区间最大值为例) ST表:一种利用dp求解区间最值的倍增算法。 定义:f[i][j]表示i到i+2^j-1这段区间的最大 ...
分类:
编程语言 时间:
2017-07-16 15:51:39
阅读次数:
176
倍增算法,时间复杂度O(nlogn) sa从小到大保存相对大小的下标 理解LSD,x数组,sa数组 char s[maxn]; int sa[maxn],t[maxn],t2[maxn],c[maxn],n; void build_sa(int m) { //LSD基数排序 int *x=t,*y= ...
分类:
编程语言 时间:
2017-05-04 16:18:57
阅读次数:
199
首先说明 :后缀数组的构建在网上有多种方法:朴素的n*n*logn,还有倍增n*logn的,还有3*n的DC3算法,当然还有DC算法。这个算法学习自林厚丛老师的《高级数据结构》,代码较长,而且常数也比较大,但是是我这种笨人可以理解的。如有人想学短而快的可以学习《罗穗骞 后缀数组 处理字符串的有力工具 ...
分类:
编程语言 时间:
2017-02-21 19:19:00
阅读次数:
499
http://poj.org/problem?id=1986 题意:给出一棵n个点m条边的树,还有q个询问,求树上两点的距离。 思路:这次学了一下倍增算法求LCA。模板。 dp[i][j]代表第i个点的第2^j个祖先是哪个点,dp[i][0] = i的第一个祖先 = fa[i]。转移方程:dp[i] ...
分类:
其他好文 时间:
2017-01-29 21:24:17
阅读次数:
387