士兵殺敵(三)

2021-07-26 11:33:15 字數 956 閱讀 2051

時間限制: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 (range minimum/maximum query)區間最值查詢

code:

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=100005;

int num[maxn],mm[maxn][20],mi[maxn][20]; //num存初始資料,mm存最大值,mi存最小值

//先進行預處理

void rmq_isit(int n) //n為士兵個數

{ for(int i=1;i<=n;i++)

mm[i][0]=mi[i][0]=num[i]; //num[i]儲存士兵i的殺敵數

for(int j=1;(1<

士兵殺敵(三)

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

士兵殺敵(三)

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

士兵殺敵(三)

題目出處 描述南將軍統率著n個士兵,士兵分別編號為1 n,南將軍經常愛拿某一段編號內殺敵數最高的人與殺敵數最低的人進行比較,計算出兩個人的殺敵數差值,用這種方法一方面能鼓舞殺敵數高的人,另一方面也算是批評殺敵數低的人,起到了很好的效果。所以,南將軍經常問軍師小工第i號士兵到第j號士兵中,殺敵數最高的...