nyoj 最大最小值 1185 線段樹

2021-07-07 02:59:11 字數 1248 閱讀 6740

時間限制:

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

41 3 2 4

21 1 4

2 2 3

51 2 3 4 5

13 1 5

樣例輸出

1

36

#include#include#include#define n 100010

using namespace std;

int a[n];

int mmi,mmx;

struct zz

q[n<<2];

void build(int gen,int l,int r)

int mid=(l+r)/2;

build(gen<<1,l,mid);

build(gen<<1|1,mid+1,r);

q[gen].mx=max(q[gen<<1].mx,q[gen<<1|1].mx);

q[gen].mi=min(q[gen<<1].mi,q[gen<<1|1].mi);

}void query(int gen,int l,int r)

int mid=(q[gen].l+q[gen].r)/2;

if(r<=mid)

query(gen<<1,l,r);

else if(l>mid)

query(gen<<1|1,l,r);

else }

int main()

} return 0;

}

nyoj 1185 線段樹區間最大最小值

最大最小值 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給出n個整數,執行m次詢問。對於每次詢問,首先輸入三個整數c l r 如果c等於1,輸出第l個數到第r個數之間的最小值 如果c等於2,輸出第l個數到第r個數之間的最大值 如果c等於3,輸出第l個數到第r個數之間的最小...

南陽 1185 最大最小值

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給出n個整數,執行m次詢問。對於每次詢問,首先輸入三個整數c l r 如果c等於1,輸出第l個數到第r個數之間的最小值 如果c等於2,輸出第l個數到第r個數之間的最大值 如果c等於3,輸出第l個數到第r個數之間的最小值與最大值的...

HDU 1185 最大最小值 線段樹(結構體)

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給出n個整數,執行m次詢問。對於每次詢問,首先輸入三個整數c l r 如果c等於1,輸出第l個數到第r個數之間的最小值 如果c等於2,輸出第l個數到第r個數之間的最大值 如果c等於3,輸出第l個數到第r個數之間的最小值與最大值的...