
区间信息维护与查询
sunday_soft
毕业于东北大学,做教师和软件开发工作
展开
-
二维区间最值差(POJ2019)
她花了很大的代价调查她的N×N公顷的方形农场(1≤N≤250)。有k(1≤K≤100000)组查询,整数B(1≤B≤N)是方形田地的一个边长,查询B×B子矩阵中最大高度和最小高度的差值。N+1行,每行都包含N个整数,代表N×N公顷每公顷的高度,每行的第1个整数表示第一列,第2个整数都表示第二列。从当前位置(x,y)开始,向右B列,向下B行,查询每一行的最大值和最小值,再求最大值好最小值。将每个元素a[ ][ ] 都存入F[k][i][0]中。Fmax[k][i][j]表示第k行[i,i+2。原创 2022-10-21 10:37:43 · 310 阅读 · 0 评论 -
最小分段数(HDU3486)RMQ+二分+枚举
*输入:**输入多个测试用例。每个测试用例的第一行包含两个数字n和k,表示人数和每个人的能力值和(n≤200000,k≤1000000000);第二行都包含n个数值,表示每个人的能力值。以两个-1结束,不处理。假设知道最小的分段数m,其m个分段的最大值之和必然大于k。问题是不知道最小分段数m,可以采用二分法搜索找到m。给你 n 个数,让你分成 m 组,每组长度 n / m,剩下的人不要。每组最大值之和要大于给出的 k,问最小的 m 是多少。对每个测试用例,都单行输出可以找到的最小m。原创 2022-10-21 09:21:59 · 187 阅读 · 0 评论 -
最频繁值(区间最值POJ3368)
i和j (1≤i≤j≤n)表示查询的边界索引。i和j (1≤i≤j≤n)。例如:8的二进制1000,7的二进制0111,两者与运算为0,log(8)比log(7)增加1。(1)为了提高效率求出数据范围内的log值,将其存储在数组lb[]中。对于每个查询,用一个整数打印一行:在给定范围内出现最频繁的值的次数。题解:本题给定区间查最值,将各个区间的元素的出现次数累计,累计区间。外,其他数和前一个数的与运算不为0,其log值和前一个数相等。(2)将输入样例中元素的出现次数累计并存入F[i][0]中。原创 2022-10-19 09:46:26 · 459 阅读 · 0 评论 -
ST(Spare Table稀疏表)
ST(Spare Table稀疏表)算法采用了倍增思想,在O(nlogn)时间构造一个二维表,可以在O(1)时间在线查询[l,r]区间的最值,有效解决在校RMQ(Range Minimum/Maximum Query,区间最值查询)问题。10]={5,3,7,2,12,1,6,4,8,15},其查询最值的ST如下图所示。若查询[l,r]区间的最值,则首先计算k的值,和前面的计算方法相同,区间长度为r-l+1,2。递推公式:F[i,j]=max(F[i,j-1],F[i+2。-1]区间的最值,区间长度为2。原创 2022-10-18 11:51:27 · 405 阅读 · 0 评论 -
区间最值差模板代码(RMQ)
题目描述:在每天挤奶的时候,农民约翰的N头牛(1≤n≤50000)总是排成一列。有一天,约翰决定与他的牛们一起玩一个极限飞盘游戏。为了简单起见,他将从奶牛队列里面选一定范围内的奶牛来玩这个游戏。然而所有的牛对这个游戏都很感兴趣。农民约翰列出了Q份名单(1≤Q≤200000)和每个奶牛的高度(1≤高度≤1000000)。对于每一份名单,他想你帮助他确定在每份名单中高度最高的奶牛与高度最低的奶牛的高度差是多少。Input第一行为N(1≤N≤50000)和Q(1≤Q≤200000);从第2行到第N+1行,每原创 2021-07-25 12:09:13 · 174 阅读 · 0 评论