最大子段和 51Nod - 1049 (on line法)

动态规划——最大子段和 最大字段和这是动态规划的经典问题,上一讲我们讲了一个简单的动态规划问题,这个最大子段和也不难,我们主要通过这几个简单的问题来了解一下动态规划。还有最大子段和用分治法也能做,等到日后我们在讲。 问题描述:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。 当所给的整均为负数时定义子段和为0。 阅读详情

最大子段和

51Nod - 1049

N个整数组成的序列a1,a2,a3,…,an,求该序列如ai+ai+1+…+aj

的连续子段和的最大值。当所给的整数均为负数时和为0。
例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。
Input 第1行:整数序列的长度N(2 <= N <= 50000)
第2 - N + 1行:N个整数(-10^9 <= A i <= 10^9) Output 输出最大子段和。 Sample Input
6
-2
11
-4
13
-5
-2
Sample Output
20

O(n)的时间复杂度内完成,注意用long long

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 50005;
long long a[maxn];
int main(){
    int n;
    scanf("%d",&n);
    for(int i = 0; i < n; i++){
       scanf("%lld",&a[i]);
    }
   long long ans = 0;
   long long sum = 0;
    for(int i = 0; i < n; i++){
        sum += a[i];
        if(sum < 0) sum = 0;
        ans = max(ans,sum);
    }
    printf("%lld\n",ans);
    return 0;
}


最大子段和——Maximum Sum on Even Positions 题解: 首先我们知道如果反转奇数的长度的话那么翻转的序列是没有变化的。所以我们只能反转奇数长度的数组。然后我们模拟反转偶数长度的时候,可以发现其实交换的就是相邻数组的位置。所以我们每次交换得到的贡献有两种,一个是a[i]-a[i-1],另一种是a[i-1]-a[i]; 所以我们先将偶数下标的答案加起来,再枚举反转区间,也就是找最大连续子段和。 #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef 阅读详情

相关推荐

51nod1050 循环数组最大子段和 dp

N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。 Input 第1行:整数序列的长度N(2

. 1万+

数据结构之---求最大字段和, 时间复杂度o(n)算法

问题描述采用动态规划策略设计并实现算法,求解最大子段和及最大子段和的起始下标和终止下标,要求算法的时间复杂性不超过O(n)。最大子段和问题给定由n个整数(可能为负整数)组成的序列a1, a2,…, an, 求该序列形如 的子段和的最大值。当所有整数均为负整数时定义其最大子段和为0。依次定义,所求的最优值为 例如当(a1,a2, a3, a4,a5,a6)= (-2,11,-4,13,-5,-2)时,

翾的博客 3950

英伟达NVIDIA数字IC后端笔试真题(ASIC Physical Design Engineer)

英伟达NVIDIA数字IC后端笔试真题(ASIC Physical Design方向)

weixin_37584728的博客 3909

Codeforces 1373 D. Maximum Sum on Even Positiono(最大子段和)

You are given an array ???? consisting of ???? integers. Indices of the array start from zero (i. e. the first element is ????0, the second one is ????1, and so on). You can reverse at most one subarray (continuous subsegment) of this array. Recall that th

tomjobs的博客 749

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置指南配置JAVA配置mooctest配置ChromeDriver配置SeleniumSelenium的使用 环境配置指南 配置JAVA 首先进入JDK8官方安装地址 然后找到Windows 64位 jdk8 点击下载(这里下载需要登录Orcale 账户) 下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了。 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 D:\java\jav

Kennen0_0的博客 9606

STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS

本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。

weixin_33739523的博客 356

最大子段和

要求:给一个数组如:-1,12,9,-5,3,7,-11,7,是求取其的一个子段,要求子段和最大,要求输出最大和,子段的开始位置,子段的结束位置。思路:暴力法可以做,而且代码也很简单,只有两个循环,但是对于元素比较多的数组时间复杂度会很大。过程: c++代码:#include <iostream> using namespace std; int main() { int *num,n

LightOn 406

MATLAB/Simulink BLDC电机控制模型搭建:六步换相与速度环实战

无刷直流电机(BLDC)控制是电机驱动领域的核心技术,其六步换相原理通过霍尔信号控制逆变器开关,使定子磁场与转子磁场保持垂直以产生最大转矩。在MATLAB/Simulink中搭建BLDC控制系统,需从电机本体建模入手,结合PWM占空比调节和速度环PI控制器,实现速度闭环与波形观测。该技术广泛应用于电动工具、无人机电调和伺服驱动器等场景。本文详细解析BLDC六步换相逻辑、反电动势建模及Simulink分层设计方法,帮助读者掌握从零搭建完整控制模型的工程实践。

weixin_28273593的博客 207

最大子段和详解(N种解法汇总)

问题的提出:给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值。如果该序列的所有元素都是负整数时定义其最大子段和为0。例如,当(a1,a2,a3,a4,a5)=(-5,11,-4,13,-4-2)时,最大子段和为11+(-4)+13=20。 解法一:穷举法,即把所有可能情况一一列举穷举法是最直接的想法,把所有的情况列出来,再进行挑选。

钟晓时 2万+

特斯拉 Model 3解析(九)特斯拉 Model 3 自动驾驶域控制器硬件架构

硬件层:车规级高密度主板 → PI/SI优化到极致传感器层:三目摄像头主导视觉,雷达补充冗余,超声波保证近距设计理念:依靠芯片算力最大化视觉潜力,而不是堆传感器这套思路的优点是:成本可控、量产快、迭代快。缺点是:极端场景下感知鲁棒性不足。纯视觉方案短期可行,但中长期必然要重新引入高分辨率雷达甚至固态LiDAR作为冗余。电源/信号完整性会越来越关键,未来域控板设计会越来越像数据中心服务器。

weixin_43199439的博客 1784

基于投影法实现扫描文件的光学字符分割——Matlab实现

投影法是指将原图像沿着某个特定的方向进行投影,得到投影线上的像素点的个数或像素值总和,从而可以得到该方向上物体的轮廓信息。对于字符分割,我们可以将图像进行水平和垂直两个方向的投影,从而得到字符之间的分割线。在OCR技术中,字符分割是非常重要的一步骤,因为字符之间的分割对字符识别的准确性有很大的影响。通过对投影值的判断,可以求出字符之间的分割线,这里我们根据垂直方向上的投影值进行判断,选取一个阈值进行筛选即可。使用sum()函数分别计算出水平和垂直方向上的投影值,得到每一行和每一列的投影值。

TechGlide的博客 581

循环序列_最大子段和变种

第一次写博客....一道icpc选拔赛的水题..题目大意:给你一个整数的循环序列,也就是头尾相接的序列,要求找出最大的一段子段和(循环意义下的)也就是常求的最大子段和问题,只不过这次数组头尾相接了而已 思路1:通常的方法就是复制这个整数数组接到原数组的后面,这样就变成了求有上下限的最大子段和问题,解题方法自己去查阅相关资料。思路2:我们可以换另外一种方式来想,求最大字段和,可以先通过ans-最小子...

k_koris的博客 623

如何正确的计算两个角度的角度差?

这一步是必要的,因为它确保了无论a相对于b是在逆时针方向还是顺时针方向,d2总是正确地反映出绕圆相反方向的角度差。这样,当函数进行最后的比较时,它能够准确地比较两个方向的旋转路径并选择最短的一个。

小秋 AI SLAM 入门实战教程 4135

D. Maximum Sum on Even Positions(最大字段和边形)

要想获得最大的偶数位置的值之和,我们只能反转一个字段,只能反转字段长度为偶数的字段,这样才使得操作有效。 这样就变成了求最大字段和的问题,不过下标有了限制,回想一下,当时求最大字段和的时候,如果到 i 位置,字段和变为 0 ,那么我们将 字段和置为0 当我们从奇数 i 位置开始反转时,所产生的价值为 a[i]-a[i-1]+sum;(sum是之前产生的价值) 当从偶数 i 位置开始反转时,所产生的价值为 a[i-1]-a[i]+sum const int N=2e5+5; i...

C_Dreamy的博客 1118

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1282

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

A - 最大子段和 B - 循环数组最大子段和

一: A - 最大子段和 N个整数组成的序列a1,a2,a3,…,an, 求该序列如ai+ai+1+…+aj 的连续子段和的最大值。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。 Input 第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N + 1行:N个整数

philophobia的博客 592

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于序列的几个算法

1.求最小子序列的和 就是对于连续的序列,找出连续序列中和最小的 例如:int a[LEN] = {4,-1,5,-2,-1,2,6,-2,1,-3}; 最小的子序列就是:-2,1,-3 对于下面的最大子序列就是:4,-1,5,-2,-1,2,6。     /** *最小子序列和 *n */ int subMinSum(int a[], int length){ i...

haodynasty的专栏 519

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Max Sum Plus Plus (动态规划+m子段和的最大值)

Max Sum Plus Plus Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves ...

codeswarrior的博客 6721

饭卡(动态规划)

饭卡 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input 多组数据。对于

codeswarrior的博客 1311

Least common multiple (数论+完全背包)

Least common multiple Partychen like to do mathematical problems. One day, when he was doing on a least common multiple(LCM) problem, he suddenly thought of a very interesting question: if given a n...

codeswarrior的博客 1010

计蒜客-划分整数(dp)

划分整数 蒜头君特别喜欢数学。今天,蒜头君突发奇想:如果想要把一个正整数 nnn 分解成不多于 kkk 个正整数相加的形式,那么一共有多少种分解的方式呢?蒜头君觉得这个问题实在是太难了,于是他想让你帮帮忙。输入格式共一行,包含两个整数 n(1≤n≤300)n(1 \leq n \leq 300)n(1≤n≤300) 和 k(1≤k≤300)k(1 \l...

codeswarrior的博客 843

编辑距离 (dp)

编辑距离 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k-&gt;s) sittin (e-&gt;i) sitting (-&gt;g) 所以kitten和sittin...

codeswarrior的博客 823

Hurdles of 110m ZOJ - 2972 (DP)

Hurdles of 110m ZOJ - 2972 In the year 2008, the 29th Olympic Games will be held in Beijing. This will signify the prosperity of China and Beijing Olympics ...

codeswarrior的博客 809

Guess the number HDU - 5981 (dp推理)

Guess the number HDU - 5981 AOA just met a problem when he attended an interview, as shown below: A and B two people play guessing games. A thinks of a number x between a and b randomly in his mind,...

codeswarrior的博客 706

Phalanx (dp求最大对称子矩阵)

Phalanx Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n*n, each element is...

codeswarrior的博客 662

You're Given a String... CodeForces - 23A

You're Given a String... CodeForces - 23A You're given a string of lower-case Latin letters. Your task is to find the length of its longest substring that can be met in the string at least

codeswarrior的博客 658
上一篇: L3-003. 社交集群(并查集)
下一篇: 循环数组最大子段和 51Nod - 1050
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值