约 8 分钟
前缀和 s[i]=a[1]+…+a[i],则区间和 a[l..r]=s[r]-s[l-1],O(1) 查询。预处理:for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i];。适合数组不变、多次区间求和。
s[i]=a[1]+…+a[i]
a[l..r]=s[r]-s[l-1]
for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i];
a=1,2,3,4,用前缀和求 a[2..4] 之和。
登录 后可看答案