题目地址:HDU 5266
这题用转RMQ求LCA的方法来做的非常简单,只需要找到l-r区间内的dfs序最大的和最小的就可以,那么用线段树或者RMQ维护一下区间最值就可以了。然后就是找dfs序最大的点和dfs序最小的点的最近公共祖先了。
代码如下:#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-06-08 14:59:13
阅读次数:
133
RMQ是一类解决区间最值查询的算法的通称;、一共有四类;在代码中有说明;下面是ST算法,就是动态规划做法;来看一下ST算法是怎么实现的(以最大值为例):首先是预处理,用一个DP解决。设a是要求区间最值的数列,f[i,j]表示从第i个数起连续2^j个数中的最大值。例如数列3 2 4 5 6 8 1 2...
分类:
其他好文 时间:
2015-05-31 01:20:22
阅读次数:
130
1 /* 2 区间单点该值,区间查询最大值; 3 hdu-1754 4 */ 5 #include 6 #include 7 #include 8 using namespace std; 9 typedef struct 10 { 11 int l,r; ...
分类:
其他好文 时间:
2015-05-30 23:52:56
阅读次数:
167
题意:令a[l..r]都+1,求a[1..n]的最大值裸的成段更新+区间最值,但是本题坐标范围很大(10^9),所以需要离散化顺便离散化模板get离散化的基本思路:设一共有m个数,范围1--n (n>>m)先用数组X[1..m]存下这些数,然后对X从小到大排序每次读入一个数p时,在X中二分查找p,....
分类:
其他好文 时间:
2015-05-25 20:06:52
阅读次数:
121
题目传送门 1 /* 2 主要利用线段树求区间最值,sum[]代表位置可用空间 3 每次找到最大值的位置 4 功能:查询最靠前能容纳广告的位置 5 */ 6 #include 7 #include 8 #include 9 #define lson l, m, rt >...
分类:
其他好文 时间:
2015-05-15 19:18:33
阅读次数:
123
对于不懂线段树的,先看为这篇文章理解下。点击打开链接
这道题普通方法 ,TLE。
题目1185题目信息运行结果本题排行讨论区最大最小值时间限制:1000 ms | 内存限制:65535 KB难度:2描述给出N个整数,执行M次询问。对于每次询问,首先输入三个整数C、L、R: 如果C等于1,输出第L个数到第R个数之间的最小值; 如果C等于2,输出第L个数到第R个数之间的最大值;...
分类:
其他好文 时间:
2015-05-07 16:46:41
阅读次数:
122
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j#include #include #include using namespace std;const int N = 10e6+1.....
分类:
编程语言 时间:
2015-05-03 00:45:00
阅读次数:
183
题目链接:http://poj.org/problem?id=3264
题目大意:n个数,求区间[ L,R ]的最大最小值之差;
题目分析:
RQM:dp[ i ][ j ], i开始长度为2^j的长度的区间最值;
O(nlog n)的预处理区间值,O(1)的查询;
代码:
//author: ACsorry
//result: accept
#include
#inclu...
分类:
其他好文 时间:
2015-04-28 22:56:11
阅读次数:
156
按照x轴建树,求线段树的区间最值。
模型转化就是: 矩阵最大交
#include
#include
#include
using namespace std;
#define lson (pos<<1)
#define rson (pos<<1|1)
const int ADD = 25555;
const int maxn = 80005;
int n,w,h,cnt;
struct Seg...
分类:
其他好文 时间:
2015-04-26 01:21:05
阅读次数:
136
RMQ (Range Minimum/Maximum Query):对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。
分类:
编程语言 时间:
2015-04-19 17:50:40
阅读次数:
181