時間限制:
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)。
輸出按照題意描述輸出。每個輸出佔一行。
樣例輸入
241 3 2 4
21 1 4
2 2 3
51 2 3 4 5
13 1 5
樣例輸出
136
恩,就是建兩棵樹,然後沒有更新,兩種查詢
#include #include#include#define maxn 10000+10
using namespace std;
int rec[maxn];
struct lnode
;lnode num[maxn<<2];
int maxi(int a,int b)
int mini(int a,int b)
int buildmin(int o,int l,int r)
int mid=(l+r)>>1;
return num[o].min=mini(buildmin(o<<1,l,mid),buildmin(o<<1|1,mid+1,r));
}int querymax(int o,int l,int r)
}int querymin(int o,int l,int r)
}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個數之間的最小值與最大值的...
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個數之間的最小值與最大值的...