51nod 1081子串求和

来源:互联网 发布:学生网络辱骂老师 编辑:程序博客网 时间:2024/06/04 22:47

要计算一组数的某些子串和。。。我居然一开始想的是打表。。。orz


后来发现完全可以dp嘛!

dp记录前n个数的和,然后要求哪两段,就用哪两段的和减一下,就求出来这一段的和了。。。


//@auther zhou//@Number 201408070203//@start time://@finish time:/*@此处注意:*//* 测试数据*/#include<iostream>#include<cstring>#include<vector>#include<cmath>#include<algorithm>using namespace std;long long a[50005]={0};long long dp[50005]={0};int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];dp[i]=dp[i-1]+a[i];}//for(int i=1;i<=n;i++)//cout<<dp[i]<<" ";//cout<<endl;cin>>n;while(n--){int i,l;cin>>i>>l;cout<<dp[l+i-1]-dp[i-1]<<endl;}return 0;}


0 0