当前位置: 首页> 文旅> 美景 > 沈阳建站模板_北京注册公司地址新规定_网站下载_秦皇岛seo排名

沈阳建站模板_北京注册公司地址新规定_网站下载_秦皇岛seo排名

时间:2025/8/30 2:20:50来源:https://blog.csdn.net/2302_79370417/article/details/144597655 浏览次数:0次
沈阳建站模板_北京注册公司地址新规定_网站下载_秦皇岛seo排名

1.最大子数组和

可以用dp求解,只需要维护一个sum表示目前为止的最大子数组,遇到num[i]时若sum > 0则sum可以继续作为子数组更新sum为sum + num[i]否则sum更新为num[i]

2.最大子数组和(有长度限制)

135. 最大子序和 - AcWing题库

要求长度不超过m的子数组,首先求出原数组的前缀和s,这个时候考虑dp就可以得到式子dp[i] = max(s[i] - s[j])(i - m <= j < i),因此我们需要用单调队列优化dp,我们维护一个单调队列储存数组下标使得队头元素距离i的距离小于等于m,这个单调队列是递增的因此我们要令si减去最小的sj这里的j也就是我们的队头的下标,因此我们替换队列元素的时候只要s[i]小于等于s[q[tt]]那么就弹出队尾、

3.最大m段子数组和

4546. 最大和加强加强版 - AcWing题库

一个经典的状态机模型,我们开一个dp[i][j][k]表示第i个数在第j段子数组是否被使用

若第i个数不被使用则dp[i][j][0] = max(dp[i - 1][j][0] , dp[i - 1][j][1]),之所以不考虑i - 1被划入j - 1是因为此时我们在考虑i在第j段的时候,并且此时i是不被使用的也就是说若i - 1在j - 1段而i又不被使用那么此时是不存在第j段的

若第i个数被使用则dp[i][j][1] = max(dp[i - 1][j][1](前i - 1个数凑出j段) , max(dp[i - 1][j - 1][0] , dp[i - 1][j - 1][1])这里考虑i - 1在第j段的时候之所以不考虑i - 1不被使用的情况是因为若i - 1在第j段却不被使用那么i就只能在j + 1段

因为发现每次转移只与i - 1有关因此可以用滚动数组优化空间

关键字:沈阳建站模板_北京注册公司地址新规定_网站下载_秦皇岛seo排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: