欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 蓝桥杯备考:前缀和算法---模板题

蓝桥杯备考:前缀和算法---模板题

2025/2/27 0:05:37 来源:https://blog.csdn.net/2301_81772249/article/details/145425325  浏览:    关键词:蓝桥杯备考:前缀和算法---模板题

【模板】前缀和

这道题,如果我们简单的用暴力解法,时间复杂度就是O(q*N)也就是10的十次方,这时候我们就会超时

我们要学习一种前缀和的算法,它能帮助我们做一些预处理,用空间复杂度代替时间复杂度,比如说这道题,我们开辟一个数组,f[N],我们只需要一个公式f[i]=f[i-1]+a[i]就能完成我们的预处理,最后查询的时间复杂度就是O(1)了,比如我们要查询l到r的和,我们就让f[r]-f[l-1],不理解的话我们就举个例子 ,比如 数组1 6 6 5  我们要搜下标2到3的和,就需要前三个的和也就是l[r]减去前1个元素的和也就是f[l-1]

我们来实现一下代码

#include <iostream>
using namespace std;
const int N = 1e5+10;
typedef long long LL;
LL a[N],f[N];
int main()
{int n,q;cin >> n >> q;for(int i = 1;i<=n;i++) cin >> a[i];for(int i = 1;i<=n;i++) f[i] = f[i-1]+a[i];while(q--){int l,r;cin >> l>>r;cout << f[r] - f[l-1] << endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词