本文主要是介绍牛客DP34 前缀和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题思路
题目解析如图
思路 算出每个位置的到第一个位置的总和
比如 第一个位置 1 总和 1
第二个位置 2 总和 3
第三个位置 4 总和 7
要算 2到3 位置的前缀和 用3位置的总和减去1位置的总和即可
还要处理一个边界情况 如果1到1位置的前缀和那么就是 用1位置的前缀和 减去0位置的前缀和
我们创建的数组应该从1位置开始
代码如下
#include <iostream>
#include <vector>
using namespace std;int main()
{//读入数据int n,q;cin>> n >> q;vector<int> arr(n+1);for(int i=1;i<arr.size();i++) {cin>>arr[i];}vector<long long> dp(n+1);for(int i=1;i<arr.size();i++) {dp[i]=dp[i-1]+arr[i];}int left,right;while(q--){cin>>left >>right;cout<<dp[right]-dp[left-1]<<endl;}return 0;
}
这篇关于牛客DP34 前缀和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!