2011年8月17日

RMQ与LCA

摘要: RMQ英文是Range Maximum(Minimum) Query,是用来求取某个区间的最大值最小值,通常用在查询次数比较大的区间最值问题中。RMQ的原理是动态规划,利用了倍增的思想。我们用A[1...N]表示一组数,[Li,Ri]表示题目涉及到的查询区间。设F[i,j]表示从A[i]到A[i + (2^j) - 1]这个范围的最大值,也就是以A[i]为起点的连续2^j个数的最大值。由于元素个数是2^j,可以均分为两部分,每部分有2^j-1个数。整个区间的最大值肯定是前半部分的最大值和后半部分最大值的较大者,满足动态规划的最优子结构。则动归方程为:f[i, j] = max(f[i, j-. 阅读全文

posted @ 2011-08-17 21:27 _Clarence 阅读(236) 评论(0) 推荐(0) 编辑

ACM PKU 2155 Matrix

摘要: 题目描述: http://poj.org/problem?id=2155树状数组第一题,很诡异的思想; 1 #include<iostream> 2 #include<cstdio> 3 #include<string.h> 4 //BIT 5 //2155 6 using namespace std; 7 const int maxn=1009; 8 int n,Q; 9 int c[maxn][maxn];10 int lowbit(int a) //其实还有这么一个公式可以求x的lowbit:x&(x^(x–1)); 11 {12 return 阅读全文

posted @ 2011-08-17 19:08 _Clarence 阅读(173) 评论(0) 推荐(0) 编辑

导航