【C++算法】1.【模板】前缀和

1.DP34 一维前缀和

2.题目描述:

3.解法(前缀和):

算法思路:

a.先预处理一个前缀和数组:

用sumi表示:1,i区间内所有元素的和,那么sumi-1里面存的就是1,i-1区间内所有元素的和。那么可得递推公式sumi=sumi-1+arri。l-1

b.使用前缀和数组快速求出某个区间内元素的和:当询问l,r时:区间内所有元素的和为sumr-suml-1。

4.代码
cpp 复制代码
#include <iostream>
#include <ostream>
#include <vector>
using namespace std;

int main()
{
    //1.读入数据
    int n,q;
    cin>>n>>q;
    vector<int> arr(n+1);
    for(int i=1;i<=n;i++) cin>>arr[i];
    //2.预处理
    vector<long long> dp(n+1);//防止溢出
    for(int i=1;i<=n;i++) dp[i]=dp[i-1]+arr[i];
    //3.使用前缀和数组
    int l=0,r=0;
    while(q--)
    {
        cin>>l>>r;
        cout<<dp[r]-dp[l-1]<<endl;
    }


    return 0;
}
相关推荐
Pniubi29 分钟前
动态规划入门 ( - 力扣509斐波那契数)
算法·动态规划
吴长建先生重名了2 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳6902 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
贝壳6903 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
starzy19903 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
布莱克6053 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
汉克老师4 小时前
《从C++小白到算法高手:GESP 1—8级成长地图》第一讲:认识GESP——从编程新手到算法探索者
c++·gesp·信息学竞赛·小学生学c++
吴可可1234 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
晴天的雨.9925 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime5 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编