news 2026/4/15 21:49:37

2026-01-21-牛客每日一题-静态区间和(前缀和)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026-01-21-牛客每日一题-静态区间和(前缀和)

title: 2026-01-21-牛客每日一题-静态区间和(前缀和)
date: 2026-01-21
tags:

  • 算法学习
  • 牛客
  • 前缀和

题目信息

  • 平台:牛客
  • 题目:【模板】静态区间和(前缀和)
  • 难度:简单(模板)
  • 题目链接

题目描述

给定长度为 n 的数组和 q 次查询,每次给出区间 [l, r],输出该区间元素之和。数组不修改。


初步思路

1. 朴素做法

如果每次查询都直接遍历区间[l, r]求和,时间复杂度为O(n)。对于q次查询,总时间复杂度为O(nq)

2. 前缀和优化

我们需要快速求出区间和,利用前缀和可以将区间查询优化到O(1)

定义
pre[i]表示数组前i个元素的和,即:
p r e [ i ] = a [ 1 ] + a [ 2 ] + ⋯ + a [ i ] pre[i] = a[1] + a[2] + \dots + a[i]pre[i]=a[1]+a[2]++a[i]
特别地,定义pre[0] = 0

推导区间和
我们需要求区间[l, r]的和:
s u m ( l , r ) = a [ l ] + a [ l + 1 ] + ⋯ + a [ r ] sum(l, r) = a[l] + a[l+1] + \dots + a[r]sum(l,r)=a[l]+a[l+1]++a[r]

我们可以用pre[r]减去pre[l-1]来得到:

  • pre[r]包含了a[1]...a[r]
  • pre[l-1]包含了a[1]...a[l-1]
  • 相减后,1l-1部分着消,剩下lr部分。

公式
s u m ( l , r ) = p r e [ r ] − p r e [ l − 1 ] sum(l, r) = pre[r] - pre[l-1]sum(l,r)=pre[r]pre[l1]

3. 一个例子

以数组a = [1, 2, 3, 4, 5]为例:

  • pre[3] = 1 + 2 + 3 = 6
  • pre[1] = 1

我们要求区间[2, 3]的和,即a[2] + a[3] = 2 + 3 = 5

根据公式sum(2, 3) = pre[3] - pre[1]
pre [ 3 ] = 1 + 2 + 3 pre [ 1 ] = 1 pre [ 3 ] − pre [ 1 ] = ( 1 + 2 + 3 ) − ( 1 ) = 2 + 3 = 5 \begin{aligned} \text{pre}[3] &= 1 + 2 + 3 \\ \text{pre}[1] &= 1 \\ \text{pre}[3] - \text{pre}[1] &= (1 + 2 + 3) - (1) \\ &= 2 + 3 \\ &= 5 \end{aligned}pre[3]pre[1]pre[3]pre[1]=1+2+3=1=(1+2+3)(1)=2+3=5

4. 复杂度

  • 预处理:O(n)
  • 每次查询:O(1)
  • 总时间复杂度:O(n + q)

算法分析

  • 核心:前缀和转化区间求和
  • 技巧:pre[0] = 0,使用 long long 防止溢出
  • 时间复杂度:O(n + q)
  • 空间复杂度:O(n)

代码实现(C++)

#include<iostream>#include<vector>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,q;cin>>n>>q;vector<longlong>pre(n+1,0);for(inti=1;i<=n;++i){longlongx;cin>>x;pre[i]=pre[i-1]+x;}while(q--){intl,r;cin>>l>>r;cout<<pre[r]-pre[l-1]<<'\n';}return0;}

总结与反思

  1. 静态区间和用前缀和是最直接且高效的模板解法。
  2. 注意区间下标从 1 开始时,pre 的边界处理。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 15:15:32

Qwen2.5-0.5B成本控制:长期运行电费与维护分析

Qwen2.5-0.5B成本控制&#xff1a;长期运行电费与维护分析 1. 小模型也能大作为&#xff1a;为什么选Qwen2.5-0.5B做长期服务&#xff1f; 你可能听说过动辄几十亿、上百亿参数的大模型&#xff0c;但今天我们要聊的&#xff0c;是一个“小个子”——Qwen2.5-0.5B-Instruct。…

作者头像 李华
网站建设 2026/4/12 17:56:15

NewBie-image-Exp0.1推理速度慢?CUDA 12.1优化部署实战

NewBie-image-Exp0.1推理速度慢&#xff1f;CUDA 12.1优化部署实战 你是否在使用 NewBie-image-Exp0.1 时遇到生成一张图要等好几分钟的情况&#xff1f;明明配置了高端显卡&#xff0c;却感觉模型跑得“像蜗牛”&#xff1f;别急——问题很可能出在环境配置上&#xff0c;而不…

作者头像 李华
网站建设 2026/4/11 22:49:14

Faiss向量搜索终极指南:快速构建高效AI检索系统

Faiss向量搜索终极指南&#xff1a;快速构建高效AI检索系统 【免费下载链接】faiss A library for efficient similarity search and clustering of dense vectors. 项目地址: https://gitcode.com/GitHub_Trending/fa/faiss Faiss作为Meta AI研发的高性能向量相似性搜索…

作者头像 李华
网站建设 2026/4/14 22:41:29

终极Twitch掉落自动获取指南:3步轻松搞定游戏奖励

终极Twitch掉落自动获取指南&#xff1a;3步轻松搞定游戏奖励 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/GitHub_Trending/tw/TwitchD…

作者头像 李华
网站建设 2026/4/8 15:44:23

无需调参!预优化镜像助你快速完成Qwen2.5-7B训练

无需调参&#xff01;预优化镜像助你快速完成Qwen2.5-7B训练 1. 引言&#xff1a;让微调像启动应用一样简单 你是否曾因为复杂的参数配置、漫长的环境搭建和显存不足的问题&#xff0c;对大模型微调望而却步&#xff1f;现在&#xff0c;这一切都将成为过去。 本文将带你体验…

作者头像 李华
网站建设 2026/4/15 13:49:05

18种预设音色一键生成|科哥开发的Voice Sculptor语音合成实战

18种预设音色一键生成&#xff5c;科哥开发的Voice Sculptor语音合成实战 1. 快速上手&#xff1a;三步生成专属语音 你有没有想过&#xff0c;只需要一句话描述&#xff0c;就能让AI用指定音色为你朗读内容&#xff1f;现在&#xff0c;科哥基于LLaSA和CosyVoice2二次开发的…

作者头像 李华