【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;
}
相关推荐
码客-ygluu2 小时前
X3 LUA 异步分布式微服务集群框架
c++·架构·lua
starzy19903 小时前
深入理解Scala隐式类:扩展方法机制
开发语言·人工智能·scala
M--Y3 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
forest_094 小时前
多 Agent 协作第二课:交叉验证≠独立验证
人工智能·python·算法·机器学习·prompt·agi
九英里路4 小时前
protobuf快速上手
网络·c++·中间件·json·谷歌·序列化·protobuf
吴可可1234 小时前
WScript Shell操作注册表详解
开发语言
纪念 2295 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
jyOverQ8 小时前
从零学 JVM(六):垃圾回收算法详解——标记清除、标记复制与标记整理
jvm·算法
码农小河669 小时前
基于PHP的电商后台蜜罐系统
开发语言·php
starzy19909 小时前
深入理解Scala柯里化函数:函数链式变换
开发语言·scala