http://poj.org/problem?id=3264

题意:给出n个数,还有q个询问,询问[l,r]区间里面最大值和最小值的差值。

思路:RMQ模板题,开两个数组维护最大值和最小值就行。

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define N 50010
#define INF 0x3f3f3f3f
int dpmin[N][], dpmax[N][], n; void Init() {
memset(dpmin, INF, sizeof(dpmin));
for(int i = ; i <= n; i++) { scanf("%d", &dpmin[i][]); dpmax[i][] = dpmin[i][]; }
int limit = (int)(log(n) / log());
for(int j = ; j <= limit; j++)
for(int i = ; i + ( << j) - <= n; i++)
dpmin[i][j] = min(dpmin[i][j-], dpmin[i+(<<(j-))][j-]), dpmax[i][j] = max(dpmax[i][j-], dpmax[i+(<<(j-))][j-]);
} int Query(int l, int r) {
int k = (int)(log(r - l + ) / log());
return max(dpmax[l][k], dpmax[r-(<<k)+][k]) - min(dpmin[l][k], dpmin[r-(<<k)+][k]);
} int main() {
int q;
while(~scanf("%d%d", &n, &q)) {
Init();
while(q--) {
int l, r; scanf("%d%d", &l, &r);
printf("%d\n", Query(l, r));
}
}
return ;
}

最新文章

  1. FragmentTabHost的基本用法
  2. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
  3. iOS NSFileManager 使用详解
  4. 初始zookeeper与集群搭建实例
  5. 【CodeForces 489A】SwapSort
  6. jquery中$.ajax
  7. XmlElement 类
  8. vs2012后设置显示行号结果整个窗口都变成黑色了,怎么变回来
  9. HTML中href的链接刷新页面问题
  10. [.NET MVC进阶系列03] Views 视图基础
  11. PHP手机获取6为不反复验证码
  12. TProcedure,TMethod,TNotifyEvent,TWndMethod的区别,并模拟点击按钮后发生的动作
  13. Linuxc - C语言下return 0的意义
  14. 虚拟机设置IP
  15. javaScript事件(七)事件类型之键盘与文本事件
  16. HDU-1078.FatMouseandCheese(线性dp + dfs)
  17. openpyxl 实现excel字母列号与数字列号之间的转换
  18. .NET Core开发日志——Middleware
  19. 多目标跟踪方法:deep-sort
  20. Laravel 实践之路: 数据库迁移与数据填充

热门文章

  1. 汉顺平html5课程分享:6小时制作经典的坦克大战!
  2. 如何清除XP的网络共享密码
  3. JS 三个对话框
  4. surfaceview组件的surfaceCreated()不被调用的解决方案
  5. 【转】Powerdesigner逆向工程从sql server数据库生成pdm
  6. 图像滤镜艺术--编码基础(Photoshop基础变换的代码实现)
  7. TP5.0中使用trace调试
  8. 不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)
  9. Delphi调用爷爷类的方法(重新构造TMethod的data和code部分,其中Code指向祖父类的方法)
  10. 批处理(bat)实现SQLServer数据库备份与还原