最大最小值(ST基础版)

网友投稿 558 2022-10-25

最大最小值(ST基础版)

最大最小值(ST基础版)

最大最小值

1000 ms  |  内存限制: 65535

给出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 #include #include #include #include using namespace std;const int maxn= 10005;int a[maxn];int Min[maxn][20], Max[maxn][20];int N; //元素个数int read(){ int res = 0, flag = 0; char ch; if((ch = getchar()) == '-') flag = 1; else if(ch >= '0' && ch <= '9') res = ch - '0'; while((ch = getchar()) >= '0' && ch <= '9') res = res * 10 + (ch - '0'); return flag ? -res : res;}int RMQ_Init() // 预处理出最大值和最小值{ for(int i = 1; i <= N; i++) Min[i][0] = Max[i][0] = a[i]; for(int j = 1; (1<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MantisShrimp - 专注于应用的对象检测框架
下一篇:Hassium- 基于 Yii2 框架的内容管理系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~