sdutacm 效率至上

2021-07-27 23:34:21 字數 1995 閱讀 9790

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...