当前位置: 首页 > news >正文

算法——前缀和

前缀和与差分的核心思想是预处理,可以在暴力枚举的过程中,快速给出查询的结果,从而优化时间复杂度。是经典的用空间替换时间的做法。

一、一维前缀和

快速求出数组中,某一段区间的和

1.先预处理出一个前缀和数组

①f [ i ] 表示:区间 [ 1 ,i ] 中所有元素的和

②计算公式:f [ i ] = f [ i - 1 ] + a [ i ]

2.利用前缀和数组

f [ l , r ] = f [ r ] - f [ l - 1 ]

【模板】静态区间和(前缀和)_牛客题霸_牛客网

描述

对于给定的长度为 nn 的数组 {a1,a2,…,an}{a1​,a2​,…,an​} ,你需要构建一个能够维护区间和信息的数据结构,使得其能支持:
∙ ∙ 区间和查询:输出 [l,r][l,r] 这个区间中的元素之和,即 ∑i=lrai∑i=lr​ai​ 。

输入描述:

第一行输入两个整数 n,q(1≦n,q≦106)n,q(1≦n,q≦106) 代表数组中的元素数量、操作次数。
第二行输入 nn 个整数 a1,a2,…,an(−109≦ai≦109)a1​,a2​,…,an​(−109≦ai​≦109) 代表初始数组。
此后 qq 行,每行输入两个整数 l,r(1≦l≦r≦n)l,r(1≦l≦r≦n) 代表区间和查询。

输出描述:

对于每一次询问,输出一行一个整数代表区间和。

示例1

输入:

3 2 1 2 4 1 2 2 3

输出:

3 6
#include <iostream> using namespace std; typedef long long LL; LL arr[1000000]; LL f[1000000];//前缀和数组 int main() { LL n,q; cin>>n>>q; int i=0; for(i=1;i<=n;i++) cin>>arr[i]; //处理前缀和数组 for(i=1;i<=n;i++) f[i]=f[i-1]+arr[i]; //处理q次询问 while(q--) { LL left,right; cin>>left>>right; cout<<f[right]-f[left-1]<<endl; } return 0; }

P1115 最大子段和 - 洛谷

题目描述

给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。

输入格式

第一行是一个整数,表示序列的长度 n。

第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai​。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

7 2 -4 3 -1 2 -4 3

输出 #1复制

4

说明/提示

样例 1 解释

选取 [3,5] 子段 {3,−1,2},其和为 4。

数据规模与约定
  • 对于 40% 的数据,保证 n≤2×103。
  • 对于 100% 的数据,保证 1≤n≤2×105,−104≤ai​≤104。
#include<iostream> using namespace std; typedef long long LL; const int N = 2e5 + 10; LL arr[N]; LL f[N]; int main() { LL n = 0; cin >> n; LL i = 0; for (i = 1;i <= n;i++) cin >> arr[i]; for (i = 1;i <= n;i++) f[i] = f[i - 1] + arr[i]; LL max_sum = f[1]; LL minPrev = 0; for (i = 1;i <= n;i++) { max_sum = max(max_sum, f[i] - minPrev); minPrev = min(minPrev, f[i]); } cout << max_sum; return 0; }
http://www.jsqmd.com/news/182897/

相关文章:

  • 详细介绍:[鸿蒙2025领航者闯关]从「单端」到「多端共生」:星盾安全架构下的金融 APP 重构实录
  • 测谎功能未来会加入吗?涉及伦理暂不考虑
  • Pytorch 张量基础知识
  • 算法——差分
  • 第21篇:Multimodal Fusion Using Multi-View Domains for Data Heterogeneity inFederated Learning
  • 英文RAP也能对得上?Sonic节奏感获赞
  • Sonic数字人能否通过图灵测试?现阶段不能
  • Sonic V2或将开放训练框架?敬请期待
  • 力扣hot100第三题:最长连续序列python
  • 暗光环境下生成效果下降?预处理提亮有帮助
  • 基于SpringBoot的智慧养老院管理系统开发毕业设计源码
  • 音频时长不匹配导致穿帮?Sonic中duration参数必须严控
  • 政务大厅数字人引导员:Sonic赋能智慧政府建设
  • 基于SpringBoot的智慧社区服务平台的设计与实现毕业设计
  • 打怪升级类合集
  • Sonic数字人接入客服系统?智能应答新形态
  • AI搜索优化如何提升企业在线可见度
  • Kubernetes集群调度Sonic任务?大规模应用方案
  • 基于SpringBoot的智能家居销售系统的设计与实现毕设
  • 从“插件化”到“AI-Ready”:整洁架构在智能体系统中的实战升级
  • 数字人恋爱心理咨询?Sonic倾听模式上线
  • 政府政策宣传视频?Sonic生成标准化播报
  • AI排名优化兴起:企业如何提升人工智能生态中的可见度
  • 数学公式讲解配合Sonic数字人?注意力更集中
  • 基于SpringBoot的自主推荐房源信息系统的研发毕设
  • 散文朗读效果?语速停顿自然获好评
  • 数字永生计划争议不断?Sonic立场声明
  • Python 网络API接口设计
  • Sonic数字人考官会不会歧视?算法确保公平
  • android room migrations