#include <bits/stdc++.h> #include <windows.h> #include <stdio.h> using namespace std; long long int numxl[100010]={0,0}/*序列*/ ,sum[100010]={0,0}/*预处理数组*/,n,m=0,l=0,r=0; int main(){ cin>>n>>m; for(int i = 0;i<n;i++) cin>>numxl[i]; //输入 for(int i = 0;i<=n;i++) sum[i]=sum[i-1]+numxl[i]; //预处理 for(int i = 0;i<m;i++){//搜寻 cin>>l>>r; cout<<sum[r]-sum[l-1]; } return 0; }
题目:输入一共2+m行,输入n和m,再输入n个数,输入m行每行r和l;
输出:m个r到l的和。
时间复杂度:O(n)
c/c++1000ms/64MB
其他语言:2000ms/256MB
快速前缀和-C++
最新推荐文章于 2024-08-15 05:02:54 发布