4 solutions

  • 1
    @ 2025-11-18 13:27:32

    解题报告

    撰写人: 钟志杰

    题意分析

    这道题如果直接用暴力就会超时,所以我们要用第二种方法,那就是前缀和!

    难度等级

    ★☆☆☆☆

    解题思路

    这道题重点在于前缀和,那么前缀和是什么呢?前缀和如下:
    前缀和指的是从a[1]加到a[i]的值,其实只要用k[i]=k[i-1]+a[i]即可(k为前缀和数组)
    求从a到b就简单了!
    只要用k[b]-k[a-1],就可以了,记住:k[a-1]不要写成k[a]了!

    解题反思

    参考程序

    #include<bits/stdc++.h>
    #define LL long long 
    using namespace std;
    LL n,m,x,s[100005],l,r;
    int main(){//主函数
        cin>>n>>m;
        for(int i=1;i<=n;i++){
        	cin>>x;
        	s[i]=s[i-1]+x;//计算前缀和
        }
        for(int i=1;i<=m;i++){
        	cin>>l>>r;
        	cout<<s[r]-s[l-1]<<endl;//把l到r的值算出来
        }
        return 0;
    }
    
    

    Information

    ID
    598
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    94
    Accepted
    33
    Uploaded By