最大最小值

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述
给出N个整数,执行M次询问。
对于每次询问,首先输入三个整数C、L、R:

如果C等于1,输出第L个数到第R个数之间的最小值;

如果C等于2,输出第L个数到第R个数之间的最大值;

如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和。

(包括第L个数和第R个数)。
 
 
输入
首先输入一个整数T(T≤100),表示有T组数据。
对于每组数据,先输入一个整数N(1≤N≤10000),表示有N个整数;
接下来一行有N个整数a(1≤a≤10000);
然后输入一个整数M,表示有M次询问;
接下来有M行(1≤M≤10000),每行有3个整数C、L、R(1≤C≤3,1≤L≤R≤N)。
输出
按照题意描述输出。每个输出占一行。
样例输入
2
4
1 3 2 4
2
1 1 4
2 2 3
5
1 2 3 4 5
1
3 1 5
样例输出
1
3
6
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAX 10010
using namespace std;
int Min[MAX<<2];
int Max[MAX<<2];
void pushup(int o)
{
Max[o]=max(Max[o<<1],Max[o<<1|1]);
Min[o]=min(Min[o<<1],Min[o<<1|1]);
}
void gettree(int o,int l,int r)
{
int a;
if(l==r)
{
scanf("%d",&a);
Max[o]=Min[o]=a;
return ;
}
int mid=(l+r)>>1;
gettree(o<<1,l,mid);
gettree(o<<1|1,mid+1,r);
pushup(o);
}
int find1(int o,int l,int r,int L,int R)
{
if(L<=l&&R>=r)
{
return Min[o];
}
int mid=(l+r)>>1;
int ans=MAX;
if(mid>=R)
ans=min(find1(o<<1,l,mid,L,R),ans);
else if(mid<L)
ans=min(find1(o<<1|1,mid+1,r,L,R),ans);
else
{
ans=min(find1(o<<1,l,mid,L,R),ans);
ans=min(find1(o<<1|1,mid+1,r,L,R),ans);
}
return ans;
}
int find2(int o,int l,int r,int L,int R)
{
if(L<=l&&R>=r)
return Max[o];
int mid=(l+r)>>1;
int ans=-100;
if(R<=mid)
ans=max(ans,find2(o<<1,l,mid,L,R));
else if(L>mid)
ans=max(ans,find2(o<<1|1,mid+1,r,L,R));
else
{
ans=max(ans,find2(o<<1,l,mid,L,R));
ans=max(ans,find2(o<<1|1,mid+1,r,L,R));
}
return ans;
}
int main()
{
int t,n,m,j,i;
int a,b,c;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
gettree(1,1,n);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(a==1)
{
printf("%d\n",find1(1,1,n,b,c));
}
if(a==2)
{
printf("%d\n",find2(1,1,n,b,c));
}
if(a==3)
{
printf("%d\n",find1(1,1,n,b,c)+find2(1,1,n,b,c));
}
}
}
return 0;
}

  

nyoj 1185 最大最小值【线段树最大值最小值维护】的更多相关文章

  1. CSU 1809 - Parenthesis - [前缀和+维护区间最小值][线段树/RMQ]

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1809 Bobo has a balanced parenthesis sequenc ...

  2. TZOJ 3315 买火车票(线段树区间最小值)

    描述 Byteotian州铁道部决定赶上时代,为此他们引进了城市联网.假设城市联网顺次连接着n 个市从1 到n 编号(起始城市编号为1,终止城市编号为n).每辆火车有m个座位且在任何两个运送更多的乘客 ...

  3. POJ 3171 区间覆盖最小值&&线段树优化dp

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4715   Accepted: 1590 D ...

  4. 区间最小值 线段树 (2015年 JXNU_ACS 算法组暑假第一次周赛)

    区间最小值 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submiss ...

  5. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 D 80 Days (线段树查询最小值)

    题目4 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an interesting game based on Jules Ve ...

  6. tyvj 1038 忠诚 区间最小值 线段树或者rmq

    P1038 忠诚 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天 ...

  7. hdoj 2795 Billboard 【线段树 单点更新 + 维护区间最大值】

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. HDU 1754 I Hate It 【线段树单点修改 维护区间最大值】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others ...

  9. 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护

    线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...

随机推荐

  1. jQuery 之 .stop() 方法

    总结version 1.7版本前.stop([clearQueue][,jumpToEnd])clearQueue: 布尔值,默认是 false;此值处理是相关的动画队列是否移除,如果为 false ...

  2. C#XML创建与节点对象引用

    我们在创建xml过程中会遇到不同的级别有相同节点的情况.如下面的xml: <?xml version="1.0" encoding="GBK"> & ...

  3. oracle安装,配置,启动

    因为主要不是讲oracle这些,所以就略写. 注意安装的时候:确保以前安装过的卸载干净了.安装的路径不能包含中文.安装的时候需要创建两层数据库.因为在选择的安装目录的平行目录会产生文件. 确认卸载完可 ...

  4. Python学习笔记——几种数据类型

    1. 列表list: Python内置的一种数据类型是列表:list,用中括号[]表示.list是一种有序的集合,可以随时添加和删除其中的元素,而且元素的类型不必相同.list可以通过下标来访问,范围 ...

  5. windows server 2008 R2 忘记administrator密码

    第一步: 插入安装光盘,重光驱启动系统,在选择“安装语言”的地方,按shift+F10 在弹出的CMD窗口中,输入以下地址: x:\>c: c:\>cd windows\system32 ...

  6. VS2015安装开发ios android

    前几天很火,装了一下,结果是不是太满意,装了VS2015只是多了一个android和ios的模版,最终还是要装xamarin ,最后装了个xamarin ,然后破解 破解地址:http://www.c ...

  7. Xcode 设置输出颜色

    是不是看厌了Xcode单调的Log,在此,我教大家实现带颜色的Log 一 首先你需要安装一个Xcode插件---XCode Colors 插件Github地址 https://github.com/r ...

  8. delphi xe5 android 开发数据访问server端(一)

    第一篇我们破解并安装了xe5 第二篇我们搭建了开发环境 接下来我们开发一个三层的android程序 建立一个webservices  stand-alone vcl application 作为手机访 ...

  9. WordPress 使用 Pie-Register 添加前台注册、登录、找回密码和编辑个人资料功能

    转自:http://www.wpdaxue.com/front-end-publishing.html Pie-Register 是一个功能比较完善的 WordPress 才能,使用它可以很方便添加和 ...

  10. git的id_rsa.pub的生成(也就是github上的SSH Keys)

    只需要一条语句就可以实现生成id_rsa.pub和id_rsa的目的:ssh-keygen -t rsa -C your_email 注意:这个邮箱是你github上的邮箱.只有在gthub上添加了这 ...