一维前缀和 - 包含输入输出优化

Posted pprp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一维前缀和 - 包含输入输出优化相关的知识,希望对你有一定的参考价值。

2017-08-27 09:30:59

writer:pprp

很基础的一个知识点,想要求区间内的和,可以考虑用两个前n项和 相减

输入输出部分,采用自己写的一个函数,用getchar() putchar()来读取和输出结果

用的时候应该注意具体的具体的类型应该根据题目选定

代码如下:

/*
@theme:一维前缀和
@writer:pprp
@declare:a[i] = s[i] - s[i-1]
@date:2017/8/27
*/

#include <bits/stdc++.h>

using namespace std;

const int maxn = 1000010;

int n, m, a[maxn];

//输入优化
inline int read()
{
    int X=0,w=1; char ch=0;
    while(ch<0 || ch>9) {if(ch==-) w=-1;ch=getchar();}
    while(ch>=0 && ch<=9) X=(X<<3)+(X<<1)+ch-0,ch=getchar();
    return X*w;
}

inline void write(int x)
{
     if(x<0) putchar(-),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+0);
}

int main()
{
    n = read();
    m = read();

    a[0] = read();

    //前n项求和 S[i]
    for(int i = 1; i < n ; i++)
    {
        a[i] = read();
        a[i] += a[i-1];
    }

    for(int i = 0 ; i < m ; i++)
    {
        int l, r;
        l = read();
        r = read();
        if(l == 1)
            write(a[r-1]);
        else
            write(a[r-1] - a[l-2]);
        putchar(\n);
    }
    return 0;
}

 

以上是关于一维前缀和 - 包含输入输出优化的主要内容,如果未能解决你的问题,请参考以下文章

二维前缀和 - 算法学习 - 输入输出优化

前缀和 差分 位运算 双指针

一维前缀和的应用(C++)

一维前缀和的应用(C++)

LeetCode 416. 分割等和子集 c++/java详细题解

AcWing 795.前缀和