当前位置: 首页 > news >正文

最大子段和,但是两段# Kadane

思路: 

  1. 左侧最大子数组和计算(l数组)

    • 使用 Kadane 算法计算以每个位置i结尾的最大子数组和
    • l[i]表示从数组开始到位置i的最大子数组和
  2. 右侧最大子数组和计算(r数组)

    • 反向使用 Kadane 算法计算以每个位置i开头的最大子数组和
    • r[i]表示从位置i到数组末尾的最大子数组和
  3. 组合结果

    • 枚举所有可能的分割点i(0 ≤ i ≤ n-2)
    • 对于每个分割点,计算l[i] + r[i+1],找到最大值

 

#include <iostream>
#include <vector>
#include <climits>
#include <algorithm>
using namespace std;int main() {// 优化输入输出性能(关闭同步和解除绑定)ios_base::sync_with_stdio(false);cin.tie(nullptr);int t; cin >> t; // 读取测试用例数量while (t--) { // 处理每个测试用例int n; cin >> n; // 读取数组长度vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i]; // 读取数组元素}// 计算左侧最大子数组和(以每个位置结尾的最大子数组和)vector<long long> l(n); // l[i] 表示从索引0到i的最大子数组和long long s = 0, m = LLONG_MIN; // s维护当前子数组和,m维护历史最大子数组和for (int i = 0; i < n; i++) {// 状态转移:要么加入当前元素到之前的子数组,要么从当前元素重新开始s = max(s + a[i], (long long)a[i]);m = max(m, s); // 更新历史最大值l[i] = m; // 记录到当前位置i的最大子数组和}// 计算右侧最大子数组和(以每个位置开头的最大子数组和)vector<long long> r(n); // r[i] 表示从索引i到n-1的最大子数组和s = 0, m = LLONG_MIN; // 重置变量用于反向计算for (int i = n - 1; i >= 0; i--) {// 同理,反向计算最大子数组和s = max(s + a[i], (long long)a[i]);m = max(m, s);r[i] = m; // 记录从当前位置i开始到末尾的最大子数组和}// 计算最大和(通过枚举所有可能的分割点)long long res = LLONG_MIN; // 初始化结果为最小值for (int i = 0; i < n - 1; i++) {// 对于每个分割点i,左侧最大子数组和为l[i],右侧最大子数组和为r[i+1]res = max(res, l[i] + r[i + 1]);}cout << res << '\n'; // 输出结果}return 0;
}

 

 

http://www.dtcms.com/a/284641.html

相关文章:

  • IMU噪声模型
  • 第五届建筑防水科技创新大会召开,凯伦股份再度入选科技创新企业十强榜单!
  • Pytorch深度学习框架实战教程03:Tensor 的创建、属性、操作与转换详解
  • 杨耀东老师在ICML2025上对齐教程:《语言模型的对齐方法:一种机器学习视角》
  • 迅速高效从web2到web3转型 ,开启远程工作
  • 【yaml文件格式说明】
  • 开源大模型api接口调用
  • React钩子HOOK
  • 原生前端JavaScript/CSS与现代框架(Vue、React)的联系、区别与运行环境(精简版)
  • [yotroy.cool] Git 历史迁移笔记:将 Git 项目嵌入另一个仓库子目录中(保留提交记录)
  • Mysql测试题
  • AI 智能质检系统在汽车制造企业的应用​
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • RocketMQ 高可用集群架构与一致性机制解析
  • reids依赖删除,但springboot仍然需要redis参数才能启动
  • 黄仁勋链博会首秀:中国开源AI催化全球革命,机器人浪潮重塑未来工厂
  • HCIE - 云计算拿下后的职业选择如何规划?
  • HCIE - 云计算方向考什么?一文全解
  • JMeter 性能测试工具
  • 推荐较好的zynq开发博客
  • 算法竞赛备赛——【图论】求最短路径——Floyd算法
  • Redis 中的看门狗机制:分布式锁的守护者
  • 力扣每日一题--2025.7.17
  • Python基础③-函数篇
  • 【git 如何查看本地分支与远程分支之间的差异】
  • Solr7升级Solr8全攻略:从Core重命名到IK分词兼容,零业务中断实战指南
  • GLM(General Language Model,通用语言模型)
  • CCLink IE转ModbusTCP网关配置无纸记录器(中篇)
  • Python应用进阶DAY7--面向对象编程基本特性和super函数
  • 2025解锁“分身术”???