题目解析
DP34 【模板】前缀和
本题的意思就是:第一行输入数组长度 和 查询次数;数组的下标从1开始; 第二行输入数组数据; 剩下的行数输入计算的下标范围
算法讲解
我们使用前缀和数组保存以i位置为结尾的前i个位置的总和-》注意填前缀表的时候因为数组的长度是从1开始,所以需要将前缀表的大小多开辟一个长度
#include <iostream>
using namespace std;
#include<vector>
int main() {
//dp[i]表示以当前位置为结尾的前i个数字的总和
int n, q;
cin >> n >> q;
vector<long long> dp(n + 1);
vector<int> nums(n + 1);
for(int i = 1; i <= n; i++)cin >> nums[i];
for(int i = 1; i <= n; i++)dp[i] = dp[i-1] + nums[i];
while(q--)
{
int l = 0, r = 0;
cin >> l >> r;
cout << dp[r] - dp[l-1] << endl;
}
return 0;
}