士兵殺敵(三)(線段樹)

2021-09-07 03:15:44 字數 1401 閱讀 3570

時間限制:

2000 ms  |  記憶體限制:65535 kb

難度:5

描述

南將軍統率著n個士兵,士兵分別編號為1~n,南將軍經常愛拿某一段編號內殺敵數最高的人與殺敵數最低的人進行比較,計算出兩個人的殺敵數差值,用這種方法一方面能鼓舞殺敵數高的人,另一方面也算是批評殺敵數低的人,起到了很好的效果。

所以,南將軍經常問軍師小工第i號士兵到第j號士兵中,殺敵數最高的人與殺敵數最低的人之間軍功差值是多少。

現在,請你寫乙個程式,幫小工回答南將軍每次的詢問吧。

注意,南將軍可能詢問很多次。 輸入

只有一組測試資料

第一行是兩個整數n,q,其中n表示士兵的總數。q表示南將軍詢問的次數。(1

輸出對於每次詢問,輸出第m號士兵到第n號士兵之間所有士兵殺敵數的最大值與最小值的差。

樣例輸入

5 2

1 2 6 9 3

1 22 4

樣例輸出

1

7題解:線段樹;還可以用rmq演算法,感覺挺複雜,也沒看。。。還有巨集定義最好大寫。。。。。

**:

1 #include2 #include3 #include4 #include5 #include6

//#define local

7#define lson root<<1,l,mid

8#define rson root<<1|1,mid+1,r

9#define l tree[root].l

10#define r tree[root].r

11#define ma tree[root].ma

12#define mi tree[root].mi

13#define now1 ma=max(tree[root<<1].ma,tree[root<<1|1].ma)

14#define now2 mi=min(tree[root<<1].mi,tree[root<<1|1].mi)

15using

namespace

std;

16const

int inf=0x3f3f3f3f;17

const

int maxn=100010;18

struct

node;

21 node tree[maxn<<2

];22

intax,ai;

23void build(int root,int l,int

r)29

else35}

36void query(int root,int x,int

y)41

else46}

47int

main()

62return0;

63 }

南陽acm士兵殺敵(三)(線段樹)

時間限制 2000 ms 記憶體限制 65535 kb 難度 5描述 南將軍統率著n個士兵,士兵分別編號為1 n,南將軍經常愛拿某一段編號內殺敵數最高的人與殺敵數最低的人進行比較,計算出兩個人的殺敵數差值,用這種方法一方面能鼓舞殺敵數高的人,另一方面也算是批評殺敵數低的人,起到了很好的效果。所以,南...

NYOJ 119 士兵殺敵(三)(線段樹)

士兵殺敵 三 時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍統率著n個士兵,士兵分別編號為1 n,南將軍經常愛拿某一段編號內殺敵數最高的人與殺敵數最低的人進行比較,計算出兩個人的殺敵數差值,用這種方法一方面能鼓舞殺敵數高的人,另一方面也算是批評殺敵數低的人,起到了很好...

NYOJ119 士兵殺敵(三) 線段樹

時間限制 2000 ms 記憶體限制 65535 kb 難度 5 描述 南將軍統率著n個士兵,士兵分別編號為1 n,南將軍經常愛拿某一段編號內殺敵數最高的人與殺敵數最低的人進行比較,計算出兩個人的殺敵數差值,用這種方法一方面能鼓舞殺敵數高的人,另一方面也算是批評殺敵數低的人,起到了很好的效果。所以,...