首页 > 其他分享 >最大子段和问题求解思路总结

最大子段和问题求解思路总结

时间:2022-11-03 11:57:51浏览次数:67  
标签:求解 int 最大值 子段 mid ls 思路 tmp1 maxsum

方法1、分治求解求最大子段和

思路:
分治解决问题,将原问题分成左右两部分进行求解,一般是二分,再对左右两部分分别重复二分操作。
对于一个序列来说,它的最大值有三种情况,第一种是左半部分的最大值,第二种是右半部分的最大值,第三种是左半部分右边的最大值+右半部分左边的最大值(有点类似于线段树维护最大和的问题)。

#include<bits/stdc++.h>
using namespace std;

const int N  = 5e4 + 10;
int a[N], n;

int maxsum(int l, int r){
    if(l == r) return max(0, a[l]);
    int mid = l + r >> 1;
    int lmax = maxsum(l, mid);
    int rmax = maxsum(mid + 1, r);
    //left
    int ls = 0, tmp1 = 0;
    for(int i = mid; i >= l; i--){//倒着算,因为要求左半边的右部最大和右半边的左部最大的和
        tmp1 += a[i];
        ls = max(ls, tmp1);
    }
    //right
    int rs = 0, tmp2 = 0;
    for(int i = mid + 1; i <= r; i ++){
        tmp2 += a[i];
        rs = max(rs, tmp2);
    }
    int maxs = ls + rs;
    return max(maxs, max(lmax, rmax));
}

signed main(){
    cin >> n;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
    }
    cout << maxsum(1, n);
    return 0;
}

标签:求解,int,最大值,子段,mid,ls,思路,tmp1,maxsum
From: https://www.cnblogs.com/N-lim/p/16853920.html

相关文章

  • java 中文乱码问题解决思路
    碰到中文乱码,引起的原因一般为,在编写程序的时候的编码方式与查看的时候的编码方式不一致,从而导致了中文乱码。碰到这种问题,首先要做的就是查看自己编码方式,以String为例St......
  • Matlab学习——求解微分方程(组)
    介绍:1.在Matlab中,用大写字母D表示导数,Dy表示y关于自变量的一阶导数,D2y表示y关于自变量的二阶导数,依此类推.函数dsolve用来解决常微分方程(组)的求解问题,调用格......
  • 测试思路的整理
    当接触到的一个完全新的需求,自己的测试思路:1,功能测试:主要功能:核心功能、进入功能、退出功能、通信功能(平台如有)、附加功能2,UI测试:轮廓、logo、视觉(颜色)、翻页、跳转3,易......
  • css样式设计思路总结
    如何清除图片下方出现几像素的空白间隙?方法1:img{display:block;}方法2:img{vertical-align:top;}除了top值,还可以设置为text-top|middle|bottom|text-bottom......
  • 最新js解密思路
    直接上源代码,这次的js加密比较少见,解密过程比之前长一些,因为就遇到过两次,在研究解密思路var_cl_jUWGomd=function(a,b){a=a-0x1ec;varc=_cl_jUWGomc[a];if(_cl_jUWGomd['Q......
  • 迪杰斯特拉算法——求解单源最短路径
    constintmaxv=1000;constintINF=MAX_INT;//邻接矩阵形式intn,G[maxv][maxv];intvisited[maxv]={false};//表示是否已加入集合S中,S是已经访问过的节点集合intd[maxv]......
  • 在微信小程序上做一个「博客园年度总结」:解决前端获取接口数据太慢的一种思路
    先介绍下目前代码中后端是如何给前端提供数据的:1、首先,构造一个函数A,这个方法中会调用博客园「获取随笔列表」接口,取到数据作进一步处理,然后把结果返出去;2、然后,使用......
  • ATM+shopping_car ——面条版(待补充)——三层架构思路
    ATM+shopping_car——面条版(待补充)——三层架构思路#coding:utf-8importosimportsysimportjsonroot_dir=os.path.dirname(os.path.dirname(__file__))user......
  • ATM思路
    ATM思路创建文件目录bin文件夹 start.pyconf文件夹 settings.pycore文件夹 conf.pydb文件夹保存用户数据文件interface文件夹 user_interface第二层逻辑......
  • ATM项目思路
    ATM思路创建文件目录bin文件夹 start.pyconf文件夹 settings.pycore文件夹 conf.pydb文件夹保存用户数据文件interface文件夹 user_interface第二层逻辑......