摘要: 首先讲一下RMQ算法的意思。RMQ(Range Minimum Query,RMQ)范围最小值,给出一个n个元素的数组,计算min(A[L],A[L+1],...,A[R-1],A[R]);这里运用了dp,先构建d[i][j]表示第i位开始2^j个元素中最小的值;转移方程d[i][j]=min(d[i][j-1],d[i+2^(j-1)][j-1]);建议画一张图来体验一下这个的意思。实现:1 void RMQ_init(int n)2 {3 for(int i=1;i=(R-L+1)/2;从L开始往右找2^(j-1)个元素的最小值,即d[L][j-1];以R结尾的连续的2^(j-1)... 阅读全文
posted @ 2013-09-26 12:06 howardcn 阅读(183) 评论(0) 推荐(0) 编辑