zoukankan      html  css  js  c++  java
  • 环状最大两段子段和题解

    环状最大两段子段和(maxsum2)

    【问题描述】

    给出一段环状序列,即认为A[1]和A[N]是相邻的,选出其中连续不重叠且非空的两段使得这两段和最大。

    【输入文件】

    输入文件maxsum2.in的第一行是一个正整数N,表示了序列的长度。

    第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列,第一个数和第N个数是相邻的。

    【输出文件】

    输入文件maxsum2.out仅包括1个整数,为最大的两段子段和是多少。

    【样例输入】

    7

    2 -4 3 -1 2 -4 3

    【样例输出】

    9

    【样例说明】

    一段为3 –1 2,一段为3 2

    【数据规模与约定】

    对于40%的数据,有2 ≤ N ≤ 2000。

    对于100%的数据,有N ≤ 200000。

    题解:

    1、f[i]记录从左至右到i前最大子段和;

    2、g[i]记录从右至左到i后最大子段和;

    3、枚举i求max(f[i]+g[i+1]),记录为maxans;

    4、f[i]记录从左至右到i前最小子段和;

    5、g[i]记录从右至左到i后最小子段和;

    6、枚举i求min(f[i],g[i+1]),记录为minans;

    7、枚举i记录a[i]之和为sum;

    8、答案ans为max(max,sum-minans)。

    View Code

    免责声明:本人过去、现在以及将来都不认识原文作者及原文作者所述当事人,且自古以来与该相对人无利益关系,但转载请注明出处。
  • 相关阅读:
    JAVA中循环删除list中元素的方法总结
    弹力设计总结
    CPU飚高问题排查基本步骤
    缓存数据库更新策略
    .Module高内聚低耦合的思考
    javascript回调函数及推论
    Laravel Autoloader模块分析
    Laravel Event模块分析
    数据操作分层设计
    Discuzx2开发标准流程
  • 原文地址:https://www.cnblogs.com/haipzm/p/2619443.html
Copyright © 2011-2022 走看看