POJ_3264_Balanced Lineup(RMQ)
来源:互联网 发布:便宜的椅子 知乎 编辑:程序博客网 时间:2024/06/09 19:47
题型:数据结构
题意:
有n个无序的数(范围是5000),查找某一个区间里的最大值和最小值的差,(查找指令范围是2*10^5个)
分析:
裸的一维RMQ求区间最值。
关于一维RMQ的学习:
http://blog.csdn.net/greyant/article/details/7545143
代码:
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>using namespace std;int RMQ_max[56789][20],RMQ_min[56789][20];double Limit;void init(int n){int tmp;for(int i=1;i<=n;i++){scanf("%d",&tmp);RMQ_max[i][0] = RMQ_min[i][0] = tmp; }for(int i=1;i<=Limit;i++){for(int j=1;j+(1<<i)-1<=n;j++){RMQ_max[j][i] =max(RMQ_max[j][i-1],RMQ_max[j+(1<<(i-1))][i-1]); RMQ_min[j][i] =min(RMQ_min[j][i-1],RMQ_min[j+(1<<(i-1))][i-1]); }}}void RMQ_find(int q){int pos1,pos2;while(q--){scanf("%d%d",&pos1,&pos2);int s = (int)(log(pos2-pos1+1)/log(2.0));int Max = max(RMQ_max[pos1][s],RMQ_max[pos2-(1<<s)+1][s]);int Min = min(RMQ_min[pos1][s],RMQ_min[pos2-(1<<s)+1][s]);printf("%d\n",Max-Min);}}int main(){int n,q;while(~scanf("%d%d",&n,&q)){Limit = log(n)/log(2.0);init(n);RMQ_find(q);}return 0;}
0 0
- POJ_3264_Balanced Lineup(RMQ)
- poj_3264_Balanced Lineup(线段树)
- 3264 Balanced Lineup //rmq
- 【RMQ】Balanced Lineup
- poj3264Balanced Lineup(RMQ)
- POJ3264-Balanced Lineup RMQ
- Balanced Lineup(RMQ)
- Balanced Lineup(RMQ)
- POJ3264Balanced Lineup【RMQ模板】
- Balanced Lineup(RMQ)
- POJ3264 Balanced Lineup (RMQ)
- poj3264 Balanced Lineup(RMQ)
- Balanced Lineup--RMQ
- RMQ---Balanced Lineup
- pku 3264 Balanced Lineup(RMQ)
- POJ 3264 Balanced Lineup(RMQ)
- POJ-3264 Balanced Lineup【RMQ】
- poj 3264 Balanced Lineup RMQ
- PS图层混合算法之三(滤色, 叠加, 柔光, 强光)
- 一个简单的实现购买商品功能的Java小程序
- Android.mk for your own module
- Introduction To Struts 2 Framework
- Oracle Golden Gate 系列七 -- 配置 GG Manager process
- POJ_3264_Balanced Lineup(RMQ)
- Struts2模型驱动
- 使用SQL Server Profiler跟踪数据库
- java单例模式
- c#操作word VBA简单应用
- 第6章 预处理、const与sizeof
- Android杀毒实现原理及实例
- springAOP基于XML配置文件方式
- XML文档分类