题目链接:BZOJ - 3489题目分析“因为是OJ上的题,就简单点好了。”——出题人真的..好..简单...首先,我们求出每个数的前一个与它相同的数的位置,即 prev[i] ,如果前面没有相同的数,prev[i] = 0。再求出每个数的后一个与它相同的数的位置,即 next[i], 如果后面没有...
分类:
其他好文 时间:
2015-04-15 16:45:49
阅读次数:
153
简述求LCA的倍增算法 对于树上的所有节点,我们可以很轻松地通过dfs求出其直接的父亲节点以及其深度 通过类似RMQ的原理我们可以处理出每个节点的第2^i个父亲 //这个过程既可以在dfs之后双重循环建也可以像树剖模板里那样dfs里直接建 //个人比较推荐后者,会少掉一些不必要的运算,但由于...
分类:
编程语言 时间:
2015-04-15 12:55:45
阅读次数:
148
题意:给n个数,求最小的段数,使得每一段的最大值之和大于给定的k。每一段的长度相等,最后若干个丢掉。思路:从小到大枚举段数,如果能o(1)时间求出每一段的和,那么总复杂度是O(n(1+1/2+1/3+...+1/n))=O(nlogn)的。但题目时限卡得比较紧,需加一点小优化,如果连续两个段数它们每...
分类:
其他好文 时间:
2015-04-15 00:46:32
阅读次数:
209
题目地址:QTREE2 - Query on a tree II
LCA学了离线与在线转RMQ方法后就去做这道题,于是想了好长时间也没想到怎么做。看了题解都是用的倍增LCA。。于是又去学了下倍增法求LCA,这才发现用倍增法做简直是水题。。。因为求路径的第k个点可以转化成求第k个父节点,然而倍增法的原理就是根据的父节点,于是这题就很容易解决了。。
求距离很好求。关键...
分类:
其他好文 时间:
2015-04-13 20:54:08
阅读次数:
202
//==========================蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/转载要声明!//==========================说好的“因为是OJ上的题,就简单点好了。”呢?一开始看不懂,不会写。然后跪了一个晚上决...
分类:
其他好文 时间:
2015-04-12 22:25:44
阅读次数:
148
题意:给一个树编号0~n-1,一个数组a[i]为节点i在树上走的最大距离(不重复点),然后求最大的区间,使得区间最大差异小于某个值。dfs求出每个数组,同时区间化。枚举区间左边界,右边界同样递增,类似单调队列,区间最值用RMQ查询(常数小)。 1 #pragma comment(linker, "....
分类:
其他好文 时间:
2015-04-12 06:46:21
阅读次数:
188
题意:求矩形内最大值。二维RMQ。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 #include 7 #include 8 #incl...
分类:
其他好文 时间:
2015-04-12 06:42:56
阅读次数:
165
题目地址:POJ 1986
纯模板题。输入的最后一个字母是多余的,完全不用管。还有注意询问的时候有相同点的情况。
代码如下:#include
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2015-04-09 13:52:10
阅读次数:
120
题目地址:POJ 1470
LCA模板题。。输入有点坑,还有输入的第一个结点不一定是根节点。
代码如下:#include
#include
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2015-04-09 11:51:08
阅读次数:
133
题目地址:POJ 1330
在线LCA转RMQ第一发。所谓在线LCA,就是先DFS一次,求出遍历路径和各个点深度,那么求最近公共祖先的时候就可以转化成求从u到v经过的点中深度最小的那个。
纯模板题。
代码如下:#include
#include
#include
#include
#include <algorith...
分类:
其他好文 时间:
2015-04-08 21:32:39
阅读次数:
198