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

题解:洛谷 U327333 Max Sum Plus Plus 2

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:U327333 Max Sum Plus Plus 2 - 洛谷

【题目描述】

【输入】

你有n nn个数s 1 s_1s1,s 2 s_2s2,…,s n s_nsn,给你一个整数m mm,求m mm个子段和的最大值
注意子段和指的是连续几个数字的和。

【输出】

输入m mm,输入n nn。后面跟着输入n nna i a_iai

【输入样例】

2 6 -1 4 -2 3 -2 3

【输出样例】

8

【算法标签】

#未分级 #线性DP-一维

【代码详解】

// 30分版本#include<bits/stdc++.h>usingnamespacestd;constintN=1005,INF=1e9;intn,m,temp;// n: 数字个数,m: 子段个数,temp: 临时变量ints[N],f[N][N],premax[N][N];// s: 数字序列,f: DP数组,premax: 前缀最大值数组intmain(){while(cin>>m>>n)// 处理多个测试用例,直到文件结束{for(inti=1;i<=n;i++)cin>>s[i];// 输入数字序列memset(f,0,sizeof(f));// 初始化DP数组为0memset(premax,0,sizeof(premax));// 初始化前缀最大值数组为0for(inti=1;i<=m;i++)// 遍历子段个数,从1到m{temp=-INF;// 初始化temp为负无穷for(intj=i;j<=n;j++)// 遍历结束位置,从i到n{if(j==i)// 如果当前是第i个子段的第一个元素f[i][j]=f[i-1][j-1]+s[i];// 只能将s[i]作为新的子段else// 如果当前不是第i个子段的第一个元素f[i][j]=max(f[i][j-1],premax[i-1][j-1])+s[j];// 状态转移方程temp=max(temp,f[i][j]);// 更新当前最大f值premax[i][j]=max(premax[i][j],temp);// 更新前缀最大值}}cout<<temp<<endl;// 输出结果}return0;}
// 40分版本#include<bits/stdc++.h>usingnamespacestd;constintN=5005,INF=1e9;intn,m,temp;// n: 数字个数,m: 子段个数,temp: 临时变量ints[N],f[N][N],premax[N];// s: 数字序列,f: DP数组,premax: 前缀最大值数组(一维优化)intmain(){while(cin>>m>>n)// 处理多个测试用例,直到文件结束{for(inti=1;i<=n;i++)cin>>s[i];// 输入数字序列memset(f,0,sizeof(f));// 初始化DP数组为0memset(premax,0,sizeof(premax));// 初始化前缀最大值数组为0for(inti=1;i<=m;i++)// 遍历子段个数,从1到m{temp=-INF;// 初始化temp为负无穷for(intj=i;j<=n;j++)// 遍历结束位置,从i到n{if(j==i)// 如果当前是第i个子段的第一个元素f[i][j]=f[i-1][j-1]+s[i];// 只能将s[i]作为新的子段else// 如果当前不是第i个子段的第一个元素f[i][j]=max(f[i][j-1],premax[j-1])+s[j];// 状态转移方程premax[j-1]=temp;// 更新premax数组,存储上一轮的最大值temp=max(temp,f[i][j]);// 更新当前最大f值}}cout<<temp<<endl;// 输出结果}return0;}
// AC版本#include<bits/stdc++.h>usingnamespacestd;constintN=1000005,INF=1e9;intn,m,temp;// n: 数字个数,m: 子段个数,temp: 临时变量ints[N],f[N],premax[N];// s: 数字序列,f: DP数组(滚动数组),premax: 前缀最大值数组intmain(){while(cin>>m>>n)// 处理多个测试用例,直到文件结束{for(inti=1;i<=n;i++)cin>>s[i];// 输入数字序列memset(f,0,sizeof(f));// 初始化DP数组为0memset(premax,0,sizeof(premax));// 初始化前缀最大值数组为0for(inti=1;i<=m;i++)// 遍历子段个数,从1到m{temp=-INF;// 初始化temp为负无穷for(intj=i;j<=n;j++)// 遍历结束位置,从i到n{f[j]=max(premax[j-1],f[j-1])+s[j];// 状态转移方程premax[j-1]=temp;// 更新premax数组,存储上一轮的最大值temp=max(temp,f[j]);// 更新当前最大f值}}cout<<temp<<endl;// 输出结果}return0;}

【运行结果】

2 6 -1 4 -2 3 -2 3 8
http://www.jsqmd.com/news/848065/

相关文章:

  • 从Hello World到UVM:在CentOS 7虚拟机里用VCS跑通你的第一个SystemVerilog仿真
  • 2026年Q2上海大众搬家号码靠谱性实测分析:大众搬家公司电话/宝山大众搬家公司/家具衣橱床拆卸挪移服务/床拆卸打包服务/选择指南 - 优质品牌商家
  • 【独家首发】Perplexity未公开的心理健康API端点清单(含3类受限资源获取通道+OAuth2.0绕过验证备案流程)
  • 如何使用 SG 函数解决 2026 JSCPC L
  • 2026年第二季度,寻找可靠自行车公司?深度解析行业标杆途锐达right - 2026年企业推荐榜
  • ComfyUI IPAdapter CLIP Vision模型配置完全指南:从基础到高级应用
  • 告别环境配置噩梦:用Docker一键部署GPGPU-Sim模拟器(附避坑指南)
  • 番茄小说下载器:免费开源的多格式小说下载完整指南
  • 查看详细审计日志追溯API调用历史与异常访问
  • 2026年Q2智慧酒店物联网AI大数据核心服务商排行:弱电智能化品牌、弱电智能化报价、弱电智能化改造、弱电智能化方案选择指南 - 优质品牌商家
  • SAP 高级退货流程(供应商)的Fiori应用实战与核心配置解析
  • 嵌入式触摸屏亮度调节实战:从PWM调光原理到软硬件解决方案
  • 告别默认灰:用Qt5.14.2+VS2019和QSS三套皮肤,5分钟让你的Qt应用颜值飙升
  • 多 Agent 协作中人格冲突频发?Hermes Agent 的 4 类 SOUL/USER 分工策略
  • 书匠策AI到底是什么来头?毕业论文写作的“黑科技“我给你扒明白了
  • CAXA 正多边形命令
  • 高效解决Windows依赖问题的智能工具完全指南:Visual C++ Redistributable AIO深度解析
  • 简述从Gemma_4到DeepSeek_V4的架构演进
  • 保姆级教程:在Ubuntu 20.04上用kitti2bag工具把KITTI Raw Data转成ROS Bag(避坑实录)
  • Perplexity企业级部署实战(内部培训绝密文档节选):权限管控、审计日志与SAML单点登录配置详解
  • 2026年Q2川内别墅防水可靠服务商综合排行一览:成都彩钢房防水/成都楼顶防水/成都防水检测/成都防水补漏/楼顶防水/选择指南 - 优质品牌商家
  • Linux块设备驱动开发实战:从内存设备到blk-mq框架详解
  • CTF新手必看:5种音频隐写术的实战破解指南(附工具下载链接)
  • CAXA 公式曲线
  • 嵌入式DMA原理与实战:从CPU解放到高效数据搬运
  • 优之彩的不锈钢实心台面,为什么是厨房装修的“长期主义者”?
  • 2026上海GEO优化技术解析与专业服务商实测参考 - 得赢
  • 别再死记硬背了!用这套‘四层架构’模型,轻松搞定物联网面试(附MQTT/CoAP实战对比)
  • WinDirStat终极指南:如何快速找到并清理Windows磁盘空间
  • Perplexity算法与传统BM25查询评分的本质差异(仅0.3%的AI平台工程师真正理解)