【Luogu P1121】环状最大两段子段和

该博客介绍了如何解决Luogu P1121题目,即寻找环状序列中连续非重叠两段的最大和。由于数据范围限制,常规的破环成链方法在复杂度上不可行。博主提出了两种链状情况的解决方案:一是预处理前后最大子段,二是使用dp状态转移。当考虑环状特性时,只需在dp中强制选取首尾段,通过f和g数组分别从前向后和从后向前进行状态转移,以处理首位相接的情况。
摘要由CSDN通过智能技术生成

题目链接

题目描述

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

题解

我相信大多数人第一眼看到这道题的想法就是破环成链。
但是一看数据范围N到了 10^5 ,那么你枚举断点就已经有O(n)的复杂度了,转移想要做到log什么的不太可能。

不妨先来看没有环的,一种做法就是预处理从前向后与从后向前记录到达每一个点的最大子段,再枚举断点把两端接起来。
另一种方法就是dp了,我们设 d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值