poj 3264 Balanced Lineup【ST算法(解区间最值)】
来源:互联网 发布:女士棉袄淘宝网 编辑:程序博客网 时间:2024/05/16 19:48
http://poj.org/problem?id=3264
题意:
题解:
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int N = 50050;int n,m,h[N],m1[N][16],m2[N][16];//m1(max);m2(min)void init() { for(int i=1;i<=n;i++) m1[i][0]=m2[i][0]=h[i]; int k = floor(log((double)n)/log(2.0)); for(int i=1;i<=k;i++) for(int j=n;j>=1;j--) { int jj = j + (1<<(i-1)); m1[j][i] = m1[j][i-1]; m2[j][i] = m2[j][i-1]; if(jj <= n) { m1[j][i] = max(m1[j][i-1],m1[jj][i-1]); m2[j][i] = min(m2[j][i-1],m2[jj][i-1]); } }}int rmq(int l,int r) { int k = floor(log((double)(r-l+1))/log(2.0)); int mx = max(m1[l][k],m1[r-(1<<k)+1][k]); int mi = min(m2[l][k],m2[r-(1<<k)+1][k]); return mx - mi;}int main() { int l , r; while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++) scanf("%d" , &h[i]); init(); while(m--) { scanf("%d%d",&l,&r); printf("%d\n",rmq(l , r)); } } return 0;}
- poj 3264 Balanced Lineup【ST算法(解区间最值)】
- POJ 3264 Balanced Lineup RMQ问题 ST算法 O(1)查找区间最值
- poj--3264Balanced Lineup+ST算法求区间最大最小值
- poj 3264 Balanced Lineup(RMQ求区间最值)
- POJ 3264 Balanced Lineup(RMQ查找区间最值)
- POJ 3264 Balanced Lineup (ST算法入门)
- POJ 3264 Balanced Lineup ST算法
- poj 3264 Balanced Lineup ST算法
- Poj 3264 Balanced Lineup【RMQ----ST算法】
- poj 3264 Balanced Lineup ( ST算法(dp))
- 【POJ】3264 - Balanced Lineup(RMQ - ST算法 || 线段树)
- POJ 3264-Balanced Lineup(RMQ-ST算法)
- POJ 3264 Balanced Lineup(ST)
- [POJ 3264] Balanced Lineup (ST表)
- POJ - 3264 Balanced Lineup (RMQ问题求区间最值)
- POJ 3264 Balanced Lineup(RMQ求区间最值)
- POJ 3264 Balanced Lineup 求线段树区间最值
- poj 3264 Balanced Lineup(线段树 区间最值)
- 高強度的port(Pipe)的性能測試
- CCS初学调试以及RTDX
- 温水煮青蛙
- C语言单链表插入基础
- http-live-streaming 协议分析
- poj 3264 Balanced Lineup【ST算法(解区间最值)】
- 实验四十一 Windows Server 2012 RDS桌面虚拟化之十二RemoteApp应用程序的用户体验和用户配置文件磁盘
- Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)
- static
- python源码剖析 读书笔记
- C primer plus 读书笔记3
- 牛人写的设计游戏服务器
- C以及Objective-C测试题(下)
- Ignatius and the Princess III(hdu1028母函数)