首页 > 【模板】前缀和
头像 xqxls
发表于 2021-10-26 14:03:22
题意整理。 给定一个长度为n的数组。 有q次查询,每次查询给定左右边界l和r,输出下标在l、r之间的所有元素的累加和。 方法一(前缀和) 1.解题思路 首先对数组进行预处理,得到对应的前缀和数组。 利用前缀和数组r下标对应的值减去l-1下标对应的值,即可得到下标在l、r之间的所有元素的累加和。 展开全文
头像 其实是牛哥
发表于 2021-10-19 15:16:40
【模板】前缀和 难度:2星 前缀和模板题。我们定义 sum[i]sum[i]sum[i] 为前 iii 个数之和,可以通过预处理 O(n)O(n)O(n) 求出所有的 sum[i]sum[i]sum[i],那么查询区间 [l,r][l,r][l,r] 中所有数之和只需要输出 sum[r]−sum[l 展开全文
头像 我只喝白开水
发表于 2025-04-16 19:27:00
#牛客春招刷题训练营# https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?channelPut=w25springcamp 观察本题,我们可以通过线段树去来记录前缀和,从而以O(logn)的复杂度完成每次查询 #in 展开全文
头像 我只喝白开水
发表于 2025-04-17 15:42:27
#include <bits/stdc++.h> #define LCHILD(p) (((p)<<1)|1) #define RCHILD(P) (((p)+1)<<1) #define int long long using namespace std; vo 展开全文
头像 似水流年<<i
发表于 2021-11-15 17:42:33
#include "stdio.h" #define N 100000 int main(){ long long int n,q,l,r,i,a[N],sum[N],node[N],j; scanf("%lld %lld",&n,&q); for(i=0;i<n;i++){ 展开全文
头像 想成为大佬的小徐同学
发表于 2023-11-23 15:19:46
#include <iostream> #include<vector> using namespace std; int main() { int n=0,q=0; cin>>n>>q; vector<int> arr(n, 展开全文
头像 cdots
发表于 2023-10-25 12:42:44
#include <iostream> #include <vector> using namespace std; int main() { int n, q; cin >> n >> q; vector<long 展开全文
头像 七夕先生
发表于 2022-02-12 17:05:57
第一想法是利用一个二维数组dp来做备忘录,用dpijdp_{ij}dpij​表示数组从i到j的和,最后通过l和r直接返回dp中的值就可以了。 代码如下: #include<iostream> #include<vector> using namespace std; in 展开全文
头像 yo9hurt
发表于 2024-03-24 21:02:38
#include <iostream> using namespace std; const int N = 1e5 + 10; //开long long 数组防止数据过大 long long sum[N], arr[N]; int main() { int n = 0, q = 展开全文
头像 Gnomeshgh112
发表于 2025-04-15 12:12:44
1 base玩家的福音a数组表示原来的数据,b[i]表示[0, i]的a数组的和。使用一个循环维护既可那么[l, r]的和就是b[r] - b[l - 1]; #include <bits/stdc++.h> using namespace std; int main() { 展开全文