yayuqwq 题解分享 · 2024/4/6
一维前缀和 - 题解
``` n = int(input()) ls = [0]+ list(map(int, input().split())) sumls = [0]*(n+1) for i in range(1,n+1): sumls[i] = sumls[i-1]+ls[i] k = int(input()) for i in range(k): l,r = map(int, input().split()) print(sumls[r]-sumls[l-1]) ```
查看全文
0 0 1 2
kunshao 题解分享 · 2025/3/17
一维前缀和 - 题解
``` #include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; //接收动态数组 vector<int> arr(n); for ( int i = 0; i < n; i++ ) { cin >> arr[i]; } //前缀和数组 vector<int> prefix(n + 1, 0); for ( int i = 1; i <= n; i++ ) { prefix[i] = prefix[i - 1] + arr[i - 1]; } //输出范围和 int m; cin >> m; for ( int i = 0; i < m; i++ ) { int a , b; cin >> a >> b; cout << prefix[b] - prefix[a - 1] << endl; } return 0; } ```
查看全文
0 0 0 6
CQS 题解分享 · 2025/4/1
一维前缀和 - 题解
``` #include <iostream> using namespace std; const int N = 1e5 + 10; int sum[N]; int main(){ int n, k; sum[0] = 0; cin >> n; for (int i = 1; i <= n; i++) { int x; cin >> x; sum[i] = sum[i - 1] + x; } cin >> k; for (int i = 0; i < k; i++) { int l, r; cin >> l >> r; cout << sum[r] - sum[l - 1] << endl; } return 0; } ```
查看全文
0 0 0 3
yuri01 题解分享 · 2025/1/22
一维前缀和 - 题解
```cpp // https://dashoj.com/p/87 #include <bits/stdc++.h> #define N 100010 using namespace std; typedef long long ll; ll n, k; vector<int> ls(N, 0); vector<int> qzh(N, 0); int main() { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) cin >> ls[i]; for (int i = 1; i <= n; i++) qzh[i] = qzh[i - 1] + ls[i]; cin >> k; while (k--) { int l, r; cin >> l >> r; cout << qzh[r] - qzh[l - 1] << endl; } return 0; } ```
查看全文
0 0 0 2
HHT 题解分享 · 2024/4/7
一维前缀和 - 题解
``` #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int n,x; int a[N],sum[N]; int main(){ cin.tie(0); cout.tie(0); cin>>n; for(int i=1; i<=n; i++){ cin>>a[i]; } sum[1] = a[1]; for(int i=2; i<=n; i++){ sum[i]=a[i]+sum[i-1]; } cin>>x; while(x--){ int l,r; cin>>l>>r; cout<<sum[r]-sum[l-1]<<endl; } return 0; } ```
查看全文
0 0 0 5
Well 题解分享 · 2024/5/25
一维前缀和 - 题解
``` from itertools import accumulate n = int(input()) arr = list(map(int, input().split())) k = int(input()) S = [0] + list(accumulate(arr)) for _ in range(k): l, r = map(int, input().split()) print(S[r] - S[l - 1]) ```
查看全文
0 0 0 2
15926609551 题解分享 · 2024/4/9
一维前缀和 - 题解
``` #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,q; int arr[N]; int prefinx[N]; int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i]; } for(int i=1;i<=n;i++){ prefinx[i]=prefinx[i-1]+arr[i]; } cin>>q; while(q--){ int l,r; cin>>l>>r; cout<<prefinx[r]-prefinx[l-1]<<endl; } return 0; } ```
查看全文
0 0 0 2
zhovy 题解分享 · 2024/4/8
一维前缀和 - 题解
帮忙看看有什么可以优化嘛👀️ ``` //用全能头 #include <bits/stdc++.h> using namespace std; int main() { //输入数组长度n,cir再赋一遍 int n, cir; cin >> n; cir = n; //初始化数组number、sum还有累计和add //最后前缀和减需要i-1位所以index0拿来做被减头 int number[n] = {0}; int sum[n] = {0}; sum[0] = 0; int add = 0; //循环输入数组,注意sum从第二开始赋值 while(cir) { cin >> number[n-cir]; add += number[n-cir]; sum[n-cir+1] = add; cir--; } //输入多少组测试times int times = 0; cin >> times; //输入左右索引l,r int l, r; //运算后按格式输出 while(times) { cin >> l; cin >> r; cout << sum[r] - sum[l-1] << endl; times--; } } ```
查看全文
0 0 0 2