【Acwing】795。プレフィックスと

1.プレフィックスと

実際、これは、数学シーケンスの最初のn項目の合計(1次元配列のプレフィックス合計)として理解できます。

配列aと配列sの接頭辞s [i] = a [1] + a [2] +…+ a [i]を定義します。

2.2次元のプレフィックスの合計

1次元の接頭辞の合計と同様に、s [i] [j]がすべてのa [i '] [j']の合計を表すとします。(1≤i'≤i、1≤j'≤j)

1つは、領域全体の値を合計する「長方形の領域」のようなものです。

3.プレフィックス合計の使用

通常、間隔の合計を見つけるために使用されます。

1次元の状況では、シーケンスaを指定して、m個のクエリに回答するように求めます。各クエリは、添え字jからkの合計です。単純なアプローチは、明らかに、クエリごとに加算操作を実行してから、結果を出力することです。これは正しいですが、mが大きすぎると、計算が多すぎてタイムアウトになる可能性があります。

タイムアウトの理由が一目でわかり、計算が繰り返されます。では、この方法をどのように改善する必要がありますか?各位置の接頭辞の合計を事前に計算してから、s [k] -s [j]を使用すると、今回の質問に対する答えではないでしょうか。これにより、計算量が大幅に削減されます。

同じことが2次元の区間和にも当てはまります。
ここに画像の説明を挿入この写真の助けを借りてそれを研究しましょう。この行列(2次元配列)で、私たちが求めているのは上の図の赤い領域であると仮定します。2つのポイント(x1、y1)、(x2、y2)が与えられた場合、すべてのポイントのプレフィックス合計を前処理したので、これら2つのポイントを結ぶ線を対角合計として持つ部分行列の値が必要です。これを暴力の方法に1つずつ追加しますが、これ以上は言いません。とにかく、遅かれ早かれTLEを取得します。接頭辞とを使用する簡単な方法に焦点を当てます。

最初に、大きな長方形全体のプレフィックス合計を表すs [x2] [y2]を見つけることができます。次に、左側の追加ブロックのプレフィックス合計と下部の追加ブロックのプレフィックス合計を減算します。これが最終的な答えです。

いいえ!これは最終的な答えではありません。余分な2つの領域を切り取ったときに、下の小さな部分が2回縮小されたことがわかりますが、2回縮小するのは明らかに不合理であり、再度追加する必要があります。

したがって、1つのクエリの場合、回答ansはs [x2] [y2] -s [x2] [y1-1] -s [x1-1] [y2] + s [x1-1] [y1-1]と等しくなければなりません。 ]。

この2次元の接頭辞の合計は、差分シーケンスとも呼ばれます。

トピック

输入一个长度为 n的整数序列。接下来再输入 m个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l个数到第 r个数的和。

输入格式
第一行包含两个整数 n和 m。
第二行包含 n个整数,表示整数数列。
接下来 m行,每行包含两个整数 l 和 r,表示一个询问的区间范围。

输出格式
共 m行,每行输出一个询问的结果。

数据范围
1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000

输入样例:
5 3
2 1 3 6 4
1 2
1 3
2 4

输出样例:
3
6
10

計算テンプレート

s [0] = 0; aはa [1]から割り当てられます

S[i] = a[1] + a[2] + ... a[i]
a[l] + ... + a[r] = S[r] - S[l - 1]
#include<iostream>
using namespace std;

const int N=100005;

int a[N],S[N];

int main(){
    
    
    int n,m,l,r;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    
    
        cin>>a[i];
    }
    
    for(int i=1;i<=n;i++){
    
    
        S[i]=S[i-1]+a[i];
    }
    
    while(m--){
    
    
        cin>>l>>r;
        cout<<S[r]-S[l-1]<<endl;;
    }
    return 0;
}

詳細については、https//www.acwing.com/solution/content/27238/を参照してください。

おすすめ

転載: blog.csdn.net/qq_43531919/article/details/115260683