51nod1174【基于线段树的RMQ】
很基础啊~
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF=-0x3f3f3f3f;
const int N=1e4+10;
struct asd{
int left;
int right;
int w;
};
asd q[N*4];
void Build(int num,int L,int R)
{
q[num].left=L;
q[num].right=R;
if(L==R)
{
scanf("%d",&q[num].w);
return;
}
Build(2*num,L,(L+R)/2);
Build(2*num+1,(L+R)/2+1,R);
q[num].w=max(q[2*num].w,q[2*num+1].w);
}
int query(int num,int s,int t)
{
if(s<=q[num].left&&t>=q[num].right)
return q[num].w;
if(q[num].right==q[num].left)
return q[num].w;
int mid=(s+t)/2;
if(mid>=t)
return query(2*num,s,t);
else if(mid<s)
return query(2*num+1,s,t);
else
return max(query(2*num,s,mid),query(2*num+1,mid+1,t));
}
int get_maxa(int num,int s,int t)
{
if(s<=q[num].left&&t>=q[num].right)
return q[num].w;
int mid=(q[num].left+q[num].right)/2;
if(mid>=t)
return get_maxa(2*num,s,t);
else if(mid<s)
return get_maxa(2*num+1,s,t);
else
return max(get_maxa(2*num,s,mid),get_maxa(2*num+1,mid+1,t));
}
int main()
{
int x,y,n,q;
scanf("%d",&n);
Build(1,1,n);
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&x,&y);
printf("%d\n",get_maxa(1,x+1,y+1));
}
return 0;
}
51nod1174【基于线段树的RMQ】的更多相关文章
- 基于线段树的RMQ
RMQ(Range Minimum/Maximum Query)区间最值查询,即给出长度为n的数组A,以及m组询问s.t(s<=t<=n),返回区间[s,t]中的最值. 基于线段树的方法实 ...
- 线段树+RMQ问题第二弹
线段树+RMQ问题第二弹 上篇文章讲到了基于Sparse Table 解决 RMQ 问题,不知道大家还有没有印象,今天我们会从线段树的方法对 RMQ 问题再一次讨论. 正式介绍今天解决 RMQ 问题的 ...
- POJ 3368 Frequent values 线段树与RMQ解法
题意:给出n个数的非递减序列,进行q次查询.每次查询给出两个数a,b,求出第a个数到第b个数之间数字的最大频数. 如序列:-1 -1 1 1 1 1 2 2 3 第2个数到第5个数之间出现次数最多的是 ...
- POJ-3264 Balanced Lineup(区间最值,线段树,RMQ)
http://poj.org/problem?id=3264 Time Limit: 5000MS Memory Limit: 65536K Description For the daily ...
- poj 3264 Balanced Lineup(线段树、RMQ)
题目链接: http://poj.org/problem?id=3264 思路分析: 典型的区间统计问题,要求求出某段区间中的极值,可以使用线段树求解. 在线段树结点中存储区间中的最小值与最大值:查询 ...
- tyvj 1038 忠诚 区间最小值 线段树或者rmq
P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天 ...
- Codeforces Round #278 (Div. 1) Strip (线段树 二分 RMQ DP)
Strip time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...
- V-Parenthesis 前缀+ZKW线段树或RMQ
Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions. The i-th questio ...
- POJ - 3264 Balanced Lineup(线段树或RMQ)
题意:求区间最大值-最小值. 分析: 1.线段树 #include<cstdio> #include<cstring> #include<cstdlib> #inc ...
随机推荐
- underscore.js 页面数据渲染
1.underscore.js 源码 // Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashken ...
- C语言printf()函数具体解释和安全隐患
一.问题描写叙述 二.进一步说明 请细致注意看,有例如以下奇怪的现象 int a=5; floatx=a; //这里转换是没有问题的.%f打印x是 5.000000 printf("%d\n ...
- Frame Relay - 简单介绍及基本配置
Frame Relay如今越来越不流行了,只是在过去的设计中被广泛应用. 所以工作上还是能常常见到的, 这篇博文从二层简单总结下FR的一些概念 在介绍Frame Relay之前,先了解下广播介质和非广 ...
- Yii 清理缓存
html: <button onclick="clearCache()">ClearCache</button> js: function clearCac ...
- mybatis 一对一映射
xml <mapper namespace="com.oracle.dao.one2oneDao"> <sql id="personColum" ...
- 移动GPU渲染原理的流派——IMR、TBR及TBDR
移动GPU渲染原理的流派--IMR.TBR及TBDR 移动GPU相对桌面级的GPU仅仅能算是未长大的小孩子,尽管小孩子在某些场合也能比成人更有优势(比方杂技.柔术之类的表演).但在力量上还是有先天的区 ...
- SQL 通配符及其使用
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- Reveal查看任意app的高级技巧
本文转载至 http://blog.csdn.net/wbdwsqwwn/article/details/40476139 Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如Pon ...
- python day- 5 字典(dic)的 增删改查 及 操作方法
字典(dic) 1.定义及格式 用{ }大括号括起来的,由key:value 来保存数据的就是 字典(dic) eg:dic = {"及时雨" : "宋江" , ...
- (转)React Native 使用react-native-image-picker库实现图片上传功能
react-native-image-picker作为一个集成相机和相册的功能的第三方库,因为其使用相对简单受到前端开发人员的喜爱. react-native-image-picker使用 首先,安装 ...