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

【剑斩OFFER】算法的暴力美学——【模板】前缀和

一、题目描述

二、算法原理

一般来说我们看到这道题目是直接根据要求:求 l 到 r 的和,我们是直接遍历数组的要进行求和操作就行,但是这种方法的复杂度为:O(n)

我们使用的动态规划来解决这到题目的时间复杂度为:O(1)。

动态规划的数组必须要多添加一个元素:0 进去,放到数组的第一个元素,至于原因是为了防止越界情况的出现。

那么我们把原数组变成动态规划的数组呢?

例如我们要求:

等于:

总结:arr :原数组,new:动态规划的数组;

new[ x ] = arr[ x -1 ] + new[ x - 1]

当我们要求:

如果没有前面的0,就会越界,所以这就是我们要往前面添加个0的原因。

那么怎么使用这个动态规划来解决这道题目呢?
假设我们要求这个区域的和:

等于:

总结:l 到 r 区域的和 = new[ r ] - new[ l -1 ] 

这个时间的复杂度为O(1),比直接查找快多了。

三、代码实现

#include <iostream>
#include <vector>
using namespace std;int main()
{int n,m;//:n:数据个数,m:查找次数cin >> n >> m;vector<long long> v1;v1.push_back(0);for(int i = 1; i <= n; i++)//动态规划{long long tmp;cin >> tmp;v1.push_back(tmp + v1[i-1]);}for(int i = 0; i < m; i++)//部分区域值的计算{long long l,r;cin >> l >> r;long long  ret = v1[r] - v1[l-1];cout << ret << endl;}return 0;
}

http://www.dtcms.com/a/609874.html

相关文章:

  • php网站建设考试新品发布会的作用
  • 视频模板网站推荐建筑装饰网站模板
  • PyCharm 软件关联 GitHub 账户
  • 中东核心支付方式
  • 2025数维杯秋季赛赛中陪跑助攻进行中
  • 人工智能基础知识笔记二十:构建一个简单的Agent+MCP Server
  • 零基础入门C语言之贪吃蛇的实现
  • Origin将2D普通的XPS曲线图升级为三维XPS瀑布图
  • 【C++】哈希表算法习题
  • 上传网站页面打不开怎么办莆田网站制作企业
  • Kotlin协程Flow流buffer缓冲批量任务或数据,条件筛选任务或数据
  • BuildingAI 控制台智能体菜单和页面功能PRD
  • 球机与云台摄像机的差异解析
  • Opencv(十二):图像矫正
  • Muon 优化器:通过正交化动量矩阵革命性地加速 AI 大模型训练
  • 11.14 脚本网页游戏 猜黑红
  • 网站引导页的作用网络营销msn是什么
  • 余姚网站开发wordpress头像同步
  • vxe-table 配置 ajax 加载列表数据,配置分页和查询搜索表单
  • worldpress 建站直播app定制开发
  • Java IDEA学习之路:第九周课程笔记归纳
  • Node.js 配置管理:生物启发式系统与跨维度架构
  • 《强量化 Transformers:开启计算机视觉新篇》
  • 免费做店招的网站国外用wordpress
  • 网站制作器手机版北京网页设计制作
  • 互联网服务的全链路架构流程解析
  • ARM与x86交叉编译实战排错指南
  • Agentic RL 如何让语⾔ 模型成为⾃主智能体
  • k8s之Headless浅谈
  • 安卓Telephony中的 phoneId、subId、simSlotIndex含义对比