学会服务站建站方案天津做淘宝网站
2026/4/18 7:35:19 网站建设 项目流程
学会服务站建站方案,天津做淘宝网站,万网做的网站咋样,无锡市建设局网站联系电话title: 2026-01-21-牛客每日一题-静态区间和#xff08;前缀和#xff09; date: 2026-01-21 tags: 算法学习牛客前缀和 题目信息 平台#xff1a;牛客题目#xff1a;【模板】静态区间和#xff08;前缀和#xff09;难度#xff1a;简单#xff08;模板#xff09…title: 2026-01-21-牛客每日一题-静态区间和前缀和date: 2026-01-21tags:算法学习牛客前缀和题目信息平台牛客题目【模板】静态区间和前缀和难度简单模板题目链接题目描述给定长度为 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[l1] \dots a[r]sum(l,r)a[l]a[l1]⋯a[r]我们可以用pre[r]减去pre[l-1]来得到pre[r]包含了a[1]...a[r]pre[l-1]包含了a[1]...a[l-1]相减后1到l-1部分着消剩下l到r部分。公式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[l−1]3. 一个例子以数组a [1, 2, 3, 4, 5]为例pre[3] 1 2 3 6pre[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]​1231(123)−(1)235​4. 复杂度预处理O(n)每次查询O(1)总时间复杂度O(n q)算法分析核心前缀和转化区间求和技巧pre[0] 0使用 long long 防止溢出时间复杂度O(n q)空间复杂度O(n)代码实现C#includeiostream#includevectorusingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn,q;cinnq;vectorlonglongpre(n1,0);for(inti1;in;i){longlongx;cinx;pre[i]pre[i-1]x;}while(q--){intl,r;cinlr;coutpre[r]-pre[l-1]\n;}return0;}总结与反思静态区间和用前缀和是最直接且高效的模板解法。注意区间下标从 1 开始时pre 的边界处理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询