P2642 双子序列最大和

给定一个整数序列,需要找到两个不相交的连续子序列,使它们的和最大。子序列长度至少为1,且至少间隔一个数。需要处理包含负数的情况,并考虑边界条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定一个长度为n的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和。一个连续子序列的和为该子序列中所有数之和。每个连续子序列的最小长度为1,并且两个连续子序列之间至少间隔一个数。

输入输出格式

输入格式:

第一行是一个整数表示n。

第二行是n个整数表示整数序列。

输出格式:

一个数,两个连续子序列的序列和之和。

输入输出样例

输入样例#1:

5
83 223 -13 1331 -935

输出样例#1:

1637

输入样例#2:

3
83 223 -13

输出样例#2:

70

说明

对于30%的数据N<=100。

对于60%的数据有N<=10000。

对于100%的数据有N<=1000000。

数据保证运算过程不会超过long long(int64)。

———————————————————————————————————————

解题思路

首先根据Luogu《P1115 最大子段和》可以知道我们可以求出一直到第i为的当前连续子串和和当前连续子串的最大和,只不过对于这道题我们必须记录每一个点之前(或之后)当前连续子串的最大长度。
我们分别把从左到右的以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值