OJ 1040 迟来的A+B

描述

“A+B”多么熟悉的题目,在本届校赛开始前CHZ同学(人称“dp小王子“)一直叫我出道A+B给他做,但由于各种原因没有出成,使他感到很遗憾,为了在世界末日前弥补他的遗憾,就决定出道A+B献给CHZ同学!!题目是这样的:

       先给你n(1=


输入
       有多组数据,每组数据的第一行有两个数字n,m(1=


输出
对每个查询输出一个结果,每个结果占一行


输入样例 1

10 1
1 2 3 4 5 5 4 3 2 1
5 5
输出样例 1

30

这个题目的意思是叫我们对一串数字选一段加起来,第一段是从第一个到X第二段是从第Y个到最后一个,但是这有一个问题那就是如果一串数据很长并且要读取很多次直接循环加起来的话那么时间会很长很长那么就会时间超限。所以需要在读取之前就完成计算并存入数组这样就只需要访问不需要再次计算。这样操作少时间也降了下来。

#include 

using namespace std;

int main()
{
    int m,n,X,Y;
    long a[100001]={0};
    long b[100001]={0};
    long c[100001]={0};
    while(cin>>m>>n)
    {
        for(int i=0;i>a[i];
        for(int j=1;j<=m;j++)
            b[j]=b[j-1]+a[j-1];
        for(int j=m-1;j>=1;j--)
            c[j]=c[j+1]+a[j];
        for(int i=0;i>X>>Y;
            int temp=b[X]+c[Y];
            cout<

 

你可能感兴趣的:(OJ)