POJ 3264:Balanced Lineup(RMQ模板题)
2024-08-31 09:15:59
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 ;
}
最新文章
- FragmentTabHost的基本用法
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
- iOS NSFileManager 使用详解
- 初始zookeeper与集群搭建实例
- 【CodeForces 489A】SwapSort
- jquery中$.ajax
- XmlElement 类
- vs2012后设置显示行号结果整个窗口都变成黑色了,怎么变回来
- HTML中href的链接刷新页面问题
- [.NET MVC进阶系列03] Views 视图基础
- PHP手机获取6为不反复验证码
- TProcedure,TMethod,TNotifyEvent,TWndMethod的区别,并模拟点击按钮后发生的动作
- Linuxc - C语言下return 0的意义
- 虚拟机设置IP
- javaScript事件(七)事件类型之键盘与文本事件
- HDU-1078.FatMouseandCheese(线性dp + dfs)
- openpyxl 实现excel字母列号与数字列号之间的转换
- .NET Core开发日志——Middleware
- 多目标跟踪方法:deep-sort
- Laravel 实践之路: 数据库迁移与数据填充
热门文章
- 汉顺平html5课程分享:6小时制作经典的坦克大战!
- 如何清除XP的网络共享密码
- JS 三个对话框
- surfaceview组件的surfaceCreated()不被调用的解决方案
- 【转】Powerdesigner逆向工程从sql server数据库生成pdm
- 图像滤镜艺术--编码基础(Photoshop基础变换的代码实现)
- TP5.0中使用trace调试
- 不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)
- Delphi调用爷爷类的方法(重新构造TMethod的data和code部分,其中Code指向祖父类的方法)
- 批处理(bat)实现SQLServer数据库备份与还原