[白俊]1659号は区間と4を求めます
白駿11659号区間求和4題
問題の説明
n個のの数が与えられた場合、iからjまでの和を求めるプログラムを作成してください. 問題を見る考えデュアルポインタ 区間が与えられるたびに計算が行われ、効率的ではないようだ. 0からiまでのすべての和を arrSumベクトルに保存します.では、 プールの概要0~iストレージおよび 要求 iからjまでの区間和は、 コード#コード#ダブルポインタの問題を解くことができれば、もっと良い答えがあるようです.
問題の説明
n個の
arrSum[j] - arr[i]
は区間和になります.vector<unsigned long long> arrSum
arrSum[j] - arrSum[i-1]
を出力すればよい.#include <iostream>
#include <vector>
using namespace std;
typedef unsigned long long ull;
vector<ull> arrSum;
int M;
void getInput(){
int N; cin >> N;
cin >> M;
ull sumCnt = 0;
arrSum.push_back(0);
for(int i=0; i<N; ++i){
int temp; cin >> temp;
sumCnt += temp;
arrSum.push_back(sumCnt);
}
}
ull calSum(){
int lp, rp; cin >> lp >> rp;
--lp;
return arrSum[rp] - arrSum[lp];
}
void solve(){
getInput();
for(int i=0; i<M; ++i){
cout << calSum() << "\n";
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
solve();
return 0;
}
ポストReference
この問題について([白俊]1659号は区間と4を求めます), 我々は、より多くの情報をここで見つけました https://velog.io/@kkoma2623/백준-11659번-구간-합-구하기-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol