1 条题解

  • 0
    @ 2026-8-5 14:24:49

    前缀和

    思路

    如果说每次都暴力枚举区间内的和,肯定会TLE,考虑使用前缀和优化。

    定义sis_i表示a1+a2++aia_1+a_2+\dots +a_i的值,对于查询llrr的和,只需要srsl1s_r-s_{l-1}即可,具体原因读者自证不难

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    int s[N];
    int main()
    {
    	int n;scanf("%d",&n);
    	for(int i=1,x;i<=n;i++)scanf("%d",&x),s[i]=s[i-1]+x;
    	int q;scanf("%d",&q);
    	while(q--)
    	{
    		int l,r;scanf("%d%d",&l,&r);
    		printf("%d\n",s[r]-s[l-1]);
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    12521
    时间
    100ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    42
    已通过
    13
    上传者