環形地鐵 字首和

2021-09-10 05:59:23 字數 948 閱讀 2562

description

有一環形地鐵,一共有nn站,編號1-n1−n。

正向行駛地鐵會按照1->2->3->⋯->n->1的方向行駛

反向則按照1->n->⋯->3->2->1的方向行駛。

給定相鄰兩站之間的地鐵行駛時間(正向、反向時間相同),現在有mm組詢問,每次詢問從第xx站到第yy站的最短時間。

input

輸入只有一組資料。

第一行包含兩個整數n,mn,m,分別表示地鐵站數和詢問次數

第二行有nn個整數a1,a2,…,ana1,a2,…,an,其中aiai表示從第ii站正向行駛到下一站的時間。

接下來mm行,每行兩個整數xx和yy,代表詢問從第xx站到第yy站的最短時間。

(1\le n,m,ai \le 200000,1 \le x,y\le n)(1≤n,m,ai≤200000,1≤x,y≤n)

output

輸出mm行,第ii行輸出第ii次詢問的答案

sample input 1 

5 2

1 2 3 4 5

1 3

1 5

sample output 1

3

5

思路:要考慮無向的最短距離,用字首和來表示,不然可能會超時

**:

#include#include#include#includeusing namespace std;

long long int a[200005];

long long int sum[200005];

int main()

long long int s=min((sum[r-1]-sum[l-1]),(sum[l-1]-sum[0]+sum[n]-sum[r-1]));

printf("%lld\n",s);

} return 0;

}

(環形)最大子串行和,Kadane演算法的字首和解釋

在kadane演算法中,問題是求以下標i結尾的最大子串行和,換句話說,我們想找到cur pre fcur pref cur pr ef的最大值,其中cur curcu r是 0,i 0,i 0,i 所有元素的和,pref是 0,j 0,j 0,j 所有元素的和,其中j j i,所以想要cur pre...

字首和演算法 一維字首和 二維字首和

輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示整數數列。接下來m行,每行包含兩個整數l和r,表示乙個詢問的區間範圍。輸出格式 共m行,每行輸出乙個詢問的結果。資...

字首和 (1)什麼是字首和和一維字首和

字首和 prefix sum 的定義為 對於乙個給定的數列 a,它的字首和數列 s 是通過遞推能求出來得 例如 假設陣列a和字首和陣列s都已經定義 int i 初始條件 a 0 0 s 0 0 for i 1 i n i 下面我們用乙個模板題,將完整的一維陣列字首和做乙個簡單的展示。題目鏈結 inc...