0)
裸题,写的还不熟练,还不能一次写完不卡壳直接过。
1)
#include <iostream>
#include <string.h>
using namespace std;
const int maxm=1000010;
int a[maxm];
struct Node{
int l;
int r;
int maxx;
}node[maxm*3];
void build(int id,int l,int r){
node[id].l=l;
node[id].r=r;
if(l==r){
node[id].maxx=a[l];
return ;
}
int mid=(l+r)>>1;
build(id<<1,l,mid);
build((id<<1)+1,mid+1,r);
node[id].maxx=max(node[id<<1].maxx,node[(id<<1)+1].maxx);
return ;
}
int que(int id,int l,int r){
int mid=(node[id].l+node[id].r)>>1;
if(node[id].l==l&&node[id].r==r){
return node[id].maxx;
}
else if(r<=mid){
return que(id*2,l,r);
}
else if(mid+1<=l){//mid+1<=1或者mid<1,不要写错
return que(id*2+1,l,r);
}
else {
return max(que(id*2,l,mid),que(id*2+1,mid+1,r));
}
}
int main()
{
int t;
cin>>t;
while(t--){
int n;
int q;
cin>>n;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,1,n);
cin>>q;
int l;
int r;
for(int i=1;i<=q;i++){
cin>>l>>r;
cout<<que(1,l,r)<<endl;
}
}
return 0;
}
2)
Description
In Land waterless, water is a very limited resource. People always fight for the biggest source of water. Given a sequence of water sources with $a_1, a_2, a_3, . . . , a_n$ representing the size of the water source. Given a set of queries each containing $2$ integers $l$ and $r$, please find out the biggest water source between $a_l$ and $a_r$.
Input
First you are given an integer $T (T \leq 10)$ indicating the number of test cases. For each test case, there is a number $n (0 \leq n \leq 1000)$ on a line representing the number of water sources. $n$ integers follow, respectively $a_1, a_2, a_3, . . . , a_n$, and each integer is in $\{1, . . . , 10^6\}$. On the next line, there is a number $q (0 \leq q \leq 1000)$ representing the number of queries. After that, there will be $q$ lines with two integers $l$ and $r (1 \leq l \leq r \leq n)$ indicating the range of which you should find out the biggest water source.
Output
For each query, output an integer representing the size of the biggest water source.
Sample Input
3 1 100 1 1 1 5 1 2 3 4 5 5 1 2 1 3 2 4 3 4 3 5 3 1 999999 1 4 1 1 1 2 2 3 3 3
Sample Output
100 2 3 4 4 5 1 999999 999999 1