随笔分类 - RMQ和LCA
区间节点的lca
摘要:题目hdu5266 分析:多节点的LCA就是dfs序中最大最小两个节点的LCA。所以只要每次维持给出节点的dfs序的最大最小,然后就是两点的LCA 代码: rmq的st+lca的倍增 #include<stdio.h> #include<iostream> #include<algorithm> #
阅读全文
hdu 3486
摘要:题意:n个人,每个人的价格a[ i ] ,求最少分几组,每组取一个人,多出来的人就不考虑,使得这取出人的价格大于k。(每组人数一样) 分析:每组取一个人,那这个人肯定是这组最大的,枚举多少组就可以了。 代码:
阅读全文
hud 3183
摘要:题意:给出n个数字的字符串,要求你删除m个数字后,得到的数字最小。 分析:删除m个,就是选n-m个,而且,选的第一个数,肯定在(0—(n-m-1))中,第二个就在(第一个的下一位—(n-m-2)中。就这样,RMQ选出最小就可以了。 代码:
阅读全文
rmq +二分暴力 hdu 5726
摘要:参考博客 题意:n 个数字的数列,有m个询问:求出 L 到 R 的 gcd(最大公约数 ),然后问这整个序列中有多少个区间的 gcd 和这个一样。 分析:L 到 R的gcd直接用RMQ的ST算法求,第二步,我们可以枚举左端点 i 从1-n,对每个i,二分右端点,计算每种gcd值的数量,因为如果左端点
阅读全文
LCA的 Trajan 算法
摘要:参考博客 参考博客 根据博客的模拟,就可以知道做法和思想。 现在就是实现他。 例题 :hdu 2586 题意:m 个询问,x 到 y 的距离,我们的思想就是求出:x到根的距离+y到根的距离-2*(lca[ x ,y ])到跟的距离。 代码:
阅读全文
RMQ 模板题 poj 3264
摘要:题目:点这里 题意:给一个长度n的数列,然后又Q个询问,问L 到R 中最大值与最小值的差。 分析:RMQ 的模板题。 代码: 用 cin 和cout 会超时……
阅读全文
二维RMQ hdu 2888
摘要:题目:点这里 题意:给出一个n*m的矩阵,然后又Q个询问:每个询问有x1,y1,x2,y2,x1,y1为子矩阵的左上角坐标,x2,y2为右上角的坐标。求此子矩阵中元素最大值,判断最大值是否在子矩阵四个角上,在就输出yes,否则输出no。 分析:二维RMQ直接上代码。
阅读全文
RMQ 的入门 hdu1806
摘要:RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。 这个有很多算法:这里介绍一种比较高效的ST算法解决这个问题。ST(Sparse Table)算法
阅读全文
浙公网安备 33010602011771号