【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;
}
相关推荐
全栈技术负责人3 小时前
DeepSeek Harness 业务工具权限插件 dsh-tool-permission设计思路
网络·算法·ai·ai编程
传奇开心果编程3 小时前
【Rust入门知识点学与练】第5课:函数
开发语言·学习·rust
mmmmath_33 小时前
面试题 02.07. 链表相交
算法·链表
秋田君3 小时前
Qt_QMediaPlayer类与QMediaPlaylist类
开发语言·qt
统计学小王子3 小时前
数学建模国赛倒计时6天——《软件工具(R语言精讲)》
开发语言·数学建模·r语言
C++ 老炮儿的技术栈3 小时前
Qt5 使用 QPainter 绘制阿基米德螺线
开发语言·c++·windows·qt·代码化
EasyGBS3 小时前
从接入到稳定播放:无插件直播H5视频流媒体播放器EasyPlayer.js如何撑起Web端流媒体
开发语言·前端·javascript
FfHUCisI3 小时前
GMP 调度器:Go 并发的心脏是如何跳动的
开发语言·golang·php
Java小白笔记3 小时前
Java 实现阿里云 OSS 文件上传链路:普通上传、秒传、分片与断点续传
java·开发语言·数据库·spring·阿里云
传奇开心果编程3 小时前
【Rust入门知识点学与练】第9课:Vec 动态数组
开发语言·学习·rust