time limit: 5000ms
memory limit: 65536kb
submit
statistic
problemdescription
題意很簡單
,給出乙個數目為
n的非有序序列
,然後有
m次查詢
.對於每次查詢輸入兩個正整數
l,r請輸出區間
[l,r]
的最大值與最小值的差值
input
第一行:輸入兩個正整數
n,m (1<=n<=50000, 1<=m<=200000 );
第二行:輸入
n個整數 大小範圍為[1,100000];
接下來的m行
,每次兩個正整數
l,r (1<=l<=r<=n);
output
輸出區間
[l,r]
最大值與最小值的差值.
exampleinput
6 3
1
7
3
4
2
5
1 5
4 6
2 2
exampleoutput
6
3
0
hint
author
#include #include#include#include#include//#includeusing namespace std;
#define m 100001
#define lson l,m,bh*2
#define rson m+1,r,bh*2+1
const int inf = 0x3f3f3f3f;
long long sum[m*4],max[m*4],min[m*4];
void pushup(int bh)//遞迴完成合併左右資訊
void build(int l,int r,int bh)
int m = (l+r)/2;
build(lson);
build(rson);
pushup(bh);
}void update(int p,long long v,int l,int r,int bh)
int m = (l+r)/2;
if(p <= m)update(p,v,lson);
else update(p,v,rson);
pushup(bh);
}//查詢l到r的和
long long ask(int l,int r,int l,int r,int bh)
long long int askmax(int l,int r,int l,int r,int bh)
long long int askmin(int l,int r,int l,int r,int bh)
int main()
tree[top].cnt++;
top = tree[top].next[t];//儲存完成進入下一代
}// ++tree[top].cnt;//cnt 則儲存以當前字母結束字串出現次數
}int search(int top,char *str)
top = tree[top].next[t];//進入下一代,看似衝突的相同名字
//實際上佔據了不同的空間,相同的建立查詢規則使得衝突矛盾消失
//此時才取出字串出現次數
}return tree[top].cnt;
}int main()
scanf("%d",&m);
//getchar();
for(i = 0;i
線段樹 效率至上
效率至上 time limit 5000ms memory limit 65536kb submit statistic problem description 題意很簡單,給出乙個數目為n的非有序序列,然後有m次查詢.對於每次查詢輸入兩個正整數l,r請輸出區間 l,r 的最大值與最小值的差值 in...
SDUT3302效率至上
problem description 題意很簡單,給出乙個數目為n的非有序序列,然後有m次查詢.對於每次查詢輸入兩個正整數l,r請輸出區間 l,r 的最大值與最小值的差值 input 第一行 輸入兩個正整數n,m 1 n 50000,1 m 200000 第二行 輸入n個整數 大小範圍為 1,10...
線段樹 SDUT3302效率至上
題意 題意很簡單,給出乙個數目為n的非有序序列,然後有m次查詢.對於每次查詢輸入兩個正整數l,r請輸出區間 l,r 的最大值與最小值的差值 輸入 第一行 輸入兩個正整數n,m 1 n 50000,1 m 200000 第二行 輸入n個整數 大小範圍為 1,100000 接下來的m行,每次兩個正整數l...