前缀和与差分

本文介绍了前缀和与差分的概念,两者都是预处理策略,用于解决计算和或数量的问题。前缀和用于求和,差分用于求差,它们互为逆运算。文章通过实例展示了前缀如何在酒厂选址问题中优化算法,避免超时,并探讨了二维前缀和在寻找矩阵最大子矩阵中的作用。此外,还介绍了差分如何在干草堆高度计算中位数的问题中提高效率。总结中提到,前缀和与差分分别代表向外和向内的思维,是算法设计中的重要工具。
摘要由CSDN通过智能技术生成

一、概念

  • 前缀和

    前缀和是一种重要的预处理,能大大降低查询的时间复杂度。可以简单理解为“数列的前 n n n 项的和”。—— OI-wiki

    他已经说得很完整了,因此我不需要再补充什么。

  • 差分

    差分是一种和前缀和相对的策略,可以当做是求和的逆运算。
    这种策略的定义是令 b i = { a i − a i − 1   i ∈ [ 2 , n ] a 1   i = 1 b_i=\begin{cases}a_i-a_{i-1}\,&i\in[2,n]\\a_1\,&i=1\end{cases} bi={ aiai1a1i[2,n]i=1—— OI-wiki

    所以……你们这个公式 b i = { a i − a i − 1   i ∈ [ 2 , n ] a 1   i = 1 b_i=\begin{cases}a_i-a_{i-1}\,&i\in[2,n]\\a_1\,&i=1\end{cases} bi={ aiai1a1i[2,n]i=1看懂了吗?
    翻译一下,也就是: 差分数组中的元素除第一个外都是用前一个数减去这个数,而第一个数就是它本身。


二、差异

  • 相同

    都是一种预处理,解决这道题因需要算和或算数量而时间太长最终 T L E TLE TLE 的“生存死局”而出现的方法。
  • 不同

    看名字首先就能知道,“前缀和”是算和,“差分”是算差。它们互为逆运算,运用完全不同。
    那么,有什么用呢?

三、运用

  • 前缀和

    • 一维前缀和

      • 酒厂选址
        题目描述

        Abstinence(戒酒)岛的居民们酷爱一种无酒精啤酒。以前这种啤酒都是从波兰进口,但今年居民们想建一个自己的啤酒厂。岛上所有的城市都坐落在海边,并且由一条沿海岸线的环岛高速路连接。酒厂的投资者收集了关于啤酒需求量的信息,即每天各城市消费的啤酒桶数。另外还知道相邻城市之间的距离。每桶啤酒每英里的运费是1元。日运费是将所需要的啤酒从酒厂运到所有城市所必需的运费之和。日运费的多少和酒厂的选址有关。投资者想找到一个合适的城市来修建酒厂,以使得日运费最小。编程读入城市的数目、相邻两城市间的距离以及每个城市消费的啤酒桶数,计算最小的日运费。

        输入格式

        第一行是一个整数 n n n 5 ≤ n ≤ 10000 5 \le n \le 10000 5n10000),表示城市的数目。城市沿高速路编号,使得相邻的城市的编号也相邻(城市 1 1 1 n n n 也被认为是相邻)。以下的 n n n 行,每行有两个非负整数。第 I + 1 I+1 I+1 行的数 z i z_i zi d i d_i di 分别是城市 I I I 每日的啤酒消费量(桶)和从城市 I I I 沿高速路到下一个城市的距离(英里)。高速路的总长不会超过 1000000 1000000 100

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值