竞赛
考级
#include <iostream> using namespace std; int a[10000005],n,m; int s[10000005]; int main() { cin>>n>>m; for(int i=1; i<=n; i++) { cin>>a[i]; s[i]=s[i-1]+a[i]; } while(m--) { int l,r; cin>>l>>r; cout<<s[r]-s[l-1]<<endl; } return 0; }
Andy
法兰西玫瑰
浅夏.山橘月
chaizechen
首先,输入一次扫一次数组肯定不行,会TLE 因此,用前缀和数组一减就行
树上结了西瓜
#include <iostream> using namespace std; int n,m,num,a[100005]={},sum=0,v=0; int s[100005]={};//前缀和 前缀和 包含当前元素之前的所有元素之和 int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; s[i]=s[i+1]+a[i];//预处理前缀和 } for(int i=0;i<m;i++) { cin>>num>>v; sum=0; sum=s[v]+s[num+1]; cout<<sum<<endl; }
孟琪峰
私密马赛
#include<iostream> using namespace std; int a[100005],s[100005]={0},n,m,R,L; int main(){ cin>>n>>m; for(int i=1;i<=n;++i){ cin>>a[i]; s[i]=s[i-1]+a[i]; } for(int i=1;i<= m;++i){ cin>>R>>L; cout<<s[L]-s[R-1]<<endl; } return 0; }
chenyifei
这题有多种方法。 暴力破解当然是可以的,但可能会超时,所以得用聪明一点的办法! 具体思路如下: 假设数组为:1 2 3 4 5 先设一个前缀和数组S,求原数组的前缀和 这样就完成了基础操作。 接下来就要用到特殊的办法了: 设我们要求[2]到[4],其实就是求[1]到[4]减[1] 其实就是s[r]-s[l-1] 即: 下面是完整代码: 求小赞一个。Thanks♪(・ω・)ノ
ddxdd
我是自愿上学的
#include<bits/stdc++.h> using namespace std; long long a[100005],b[100005]={0}; int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=b[i-1]+a[i]; } int l,r; for(int i=1;i<=m;i++){ cin>>l>>r; cout<<b[r]-b[l-1]<<endl; } }
叶天帝(互关)
#include<bits/stdc++.h> using namespace std; #define ll long long int a[1000000],p[1000000]; int n,m; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; p[i]=p[i-1]+a[i]; } while(m--){ int l,r; cin>>l>>r; cout<<p[r]-p[l-1]<<endl; } return 0; }
/程泊远/ 被困惠州蓝湖集中营
前缀和就是把第1项到第i项的和存储在数组里
紫幽梦魇Grimm
#include <iostream> using namespace std; int main(){ int a[10000005]; int s[10000005]; int n,m; cin >> n >> m; for(int i=1;i<=n;i++){ cin >> a[i]; s[i]=s[i-1]+a[i]; } for(int y=1;y<=m;y++){ int l,r; cin >> l >> r; cout << s[r]-s[l-1] << endl; } return 0; }
137****7127
#include<bits/stdc++.h> using namespace std; int a[1000005]; int p[1000005]; int main(){ int n , q; cin >> n >> q; for(int i = 1;i <= n;i++) cin >> a[i] , p[i] = a[i] + p[i-1]; while(q--){ int l , r; cin >> l >> r; cout << p[r] - p[l-1] << endl; } return 0; }
DARK SPECTRE
#include <bits/stdc++.h> using namespace std; int a[100001]; int main(){ int n,m,l,r; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; if(i!=0) a[i]+=a[i-1]; } for(int i=1;i<=m;i++) { cin>>l>>r; cout<<a[r]-a[l-1]<<endl; } return 0; }
Voldemort
初识c++
高原上の万叶.com
#include <iostream> using namespace std; int a[10000005]; int s[10000005]; int main(){ int n,m; cin >> n >> m; for(int i=1;i<=n;i++){ cin >> a[i]; s[i]=s[i-1]+a[i]; } while(m--){ int l,r; cin >> l >> r; cout << s[r]-s[l-1] << endl; } return 0; }
黑客
~Lyney~
共31条