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

基础算法——前缀和

由于比赛基本都是采用Dev-C++所以,算法篇基本都是采用Dev-C++来解释(版本5.11,c++11)
首先介绍一下前缀和算法

给定一个数组,有q次询问,每次询问:
两个整数l,r,求出数组 l 到 r的结果

遇到问题首先先来分析问题
上图:
在这里插入图片描述
第一种方法,相信大家都会写,所以我们现在来写第二种解法:
在这里插入图片描述
数学中的求和公式,我们可以将其变为:
在这里插入图片描述

那我们为什么要这么做呢?

例如:上面的数组 1 2 3 4 5
用这个公式可以得出 1 3 6 10 15
得出的东西是什么呢?
在这里插入图片描述
可见,每一项就等于自身的值,加上前面的所有项的值
那我们应该如何求区间中的值呢?
数组[r]-数组[l-1]
在这里插入图片描述
要求蓝色的值,我们就要用从数组开始一直到 r 的值减去数组开始一直到 l-1 的值。

证明一下,比如我们要求 l =2,r=5
上面我们已经求得了数组开始一直加到数组结尾,值为15,数组[l-1]的值为1
最终我们所得的值为 14.

下来我们写一下代码:

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+9;
void test()
{int lenth,q;cin>>lenth>>q;ll arr[N],perfix[N];for(int i=1;i<=lenth;i++){cin>>arr[i];}for(int i=1;i<=lenth;i++){perfix[i]=perfix[i-1]+arr[i];}while(q--){int l,r;cin>>l>>r;cout<<perfix[r]-perfix[l-1]<<'\n';}
}
int main()
{int T;cin>>T;while(T--){test();}return 0;
}

在这里插入图片描述
代码没有问题,这里有一点我想提一下,这里的代码,数组arr[0]是不存东西的,是为了方便后面前缀和,有的小伙伴代码风格不同,就是要从0开始,也是可以的
通过调试:
在这里插入图片描述
我们可以看到时这样存储的,我们题目中询问l=2 r=5并不是问下标,而是实打实元素的顺序,要解决这一问题,我们可以
在这里插入图片描述
将perfix[i]=perfix[i-1]+arr[i];改为现在这样这样就妥了

在这里插入图片描述
当然还有别的修改办法,这里就不一 一列举了。

http://www.lryc.cn/news/504244.html

相关文章:

  • spring实例化对象的几种方式(使用XML配置文件)
  • 【二叉树】力扣 129.求根节点到叶子节点数字之和
  • 深度学习物体检测之YOLOV5源码解读
  • 音频数据采样入门详解 - 给Python初学者的简单解释
  • Unity类银河战士恶魔城学习总结(P179 Enemy Archer 弓箭手)
  • SpringCloud集成sleuth和zipkin实现微服务链路追踪
  • Python随机抽取Excel数据并在处理后整合为一个文件
  • Linux+Docker onlyoffice 启用 HTTPS 端口支持
  • 在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c
  • python中math模块常用函数
  • 优化 Vue 3 开发体验:配置 Vite 使用 WebStorm 作为 Vue DevTools 的默认编辑器
  • 【C语言练习(9)—有一个正整数,求是几位数然后逆序打印】
  • 热敏打印机的控制
  • 【closerAI ComfyUI】电商赋能,AI模特套图生产,各种姿势自定义,高度保持人物服饰场景一致性,摆拍街拍专用
  • ARM学习(36)静态扫描规则学习以及工具使用
  • 使用 Docker Compose 部署 Redis 主从与 Sentinel 高可用集群
  • 警惕!手动调整服务器时间可能引发的系统灾难
  • MySQL追梦旅途之性能优化
  • 【机器学习】【无监督学习——聚类】从零开始掌握聚类分析:探索数据背后的隐藏模式与应用实例
  • 基于深度Q网络(Deep Q-Network,DQN)的机器人路径规划,可以自定义地图,MATLAB代码
  • Python-从文件中读取数据-Sat-Sun
  • 测试工程师的职业规划
  • 使用 Puppeteer 快速上手 Node.js 爬虫
  • 浏览器的跨域问题与解决方案
  • MyBatis一二级缓存的区别?
  • [2024-12 CISCN 长城杯] Crypto
  • pytorch bilstm crf的教程,注意 这里不支持批处理,要支持批处理 用torchcrf这个。
  • Python毕业设计选题:基于django+vue的疫情数据可视化分析系统
  • tomcat被检测到目标URL存在htp host头攻击漏洞
  • 1.初识python