zoukankan      html  css  js  c++  java
  • 日常水题(最大子段和+最短路径+最小生成树)

    1、题目描述:给定一个正整数数列A,求一个平均数最大的、长度不小于L的子段。

    分析:二分答案,判定是否存在一个长度不小于L的子段,平均数不小于二分的值。如果把数列中的每个数都减去二分的值,就转换为判定“是否存在一个长度不小于L的子段,子段和非负”。

          求一个子段,它的和最大,子段的长度不小于L。

    子段和可以转换为前缀和相减的形式,即设sumj表示Ai~Aj的和,

    则有:max{A[j+1]+A[j+2].......A[i] } ( i-j>=L ) = max{ sum[i] - min{ sum[j] }(0<=j<=i-L) }(L<=i<=n)

    仔细观察上面的式子可以发现,随着i的增长,j的取值范围 0~i-L 每次只会增大1。换言之,每次只会有一个新的取值进入 min{sumj} 的候选集合,所以我们没必要每次循环枚举j,只需要用一个变量记录当前的最小值,每次与新的取值 sum[i-L] 取min 就可以了。

  • 相关阅读:
    在HTML文件中加载js
    HTML表单的问题
    HTML自动换行的问题
    HTML的结束标签问题
    数据库基本知识
    PHP中数据库的连接
    2014年7月
    3.2版本视频讲解知识点
    2014年7月
    选项卡
  • 原文地址:https://www.cnblogs.com/mvpmvp/p/13763095.html
Copyright © 2011-2022 走看看