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 2sample output 11 2 3 4 5
1 3
1 5
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...