题目链接:
HDU 1024 Max Sum Plus Plus
题意:
n个数,求m个不相交连续子序列的最大和。n<=1e6,单个数[-32768,32767],m>0.
分析:
dp[i][j][1]表示在求前i个数的j个不相交的最大子序列和时不要第i个数
dp[i][j][0]表示要第i个数。
*初始化:*
dp为-INF,但是dp[0][0][0]=dp[0][0][1]=0;
*状态转移方程:*
如果第i个数要:
考虑第i-1个数要不要,如果要的话,将第i个数合并进第i-1个数所属于的第j个子序列(dp[i-1][j][0])或者第i个数独自成为第j个子序列(dp[i-1][j-1][0]),
如果不要,那么第i个数独自成为第j个子序列(dp[i-1][j-1][1])
即:dp[i][j][0]=max(max(dp[i-1][j][0],dp[i-1][j-1][0]),dp[i-1][j-1][1])+data[i];
如果第i个数不要:dp[i][j][1]=max(dp[i-1][j][0],dp[i-1][j][1]);
但是这样做有一个问题–数组太大,但是可以用滚动数组的方法解决。
注意
详细解决方案
HDU 1024 Max Sum Plus Plus(求m个不相交连续子序列最大和/01背包)
热度:99 发布时间:2023-12-08 11:03:36.0
相关解决方案
- RSA 加密算法 提到的 1024 2048bit 是什么意思 ?该如何处理
- RSA 加密算法 谈到的 1024 2048bit 是什么意思
- ifreme 为什么执行的 结果 跳转 出来 而 不是在 1024*800的框架内解决方法
- byte[1024] 这个有多大,该如何解决
- 开发控制17'液晶显示器(1280×1024)显示图像的单片机,该如何处理
- 关于android ndk出现ReferenceTable overflow (max=1024)的解决办法
- 1024*600 Android平板电脑模拟器,该怎么解决
- HDU 1024 Max Sum Plus Plus DP *
- 1024. 科学计数法 (20) PAT
- PAT甲级-1024 Palindromic Number (25分)
- PAT乙级-1024 科学计数法 (20分)
- Java - PAT - 1024. 科学计数法 (20)
- PIPIOJ 1024: 走路还是坐公交
- 报错误:ORA-01691: Lob 段 USER_MURPHY.SYS_LOB0000093717C00006$$ 无法通过 1024 (在表空间 XXXX 中) 扩展)
- 2020 - 1024 = 996 ?
- HDU 1024 Max Sum Plus Plus(动态规划 很详很详解)
- Leetcode 1024. 视频拼接(DAY 33) ---- 动态规划学习期
- 1024节,程序员不准不“贪心”-记录 LeetCode 1024 节每日一题
- 【Leetcode每日一题】1024. 视频拼接(区间预处理,贪心)
- 1024: 学霸猫
- ZZULIOJ 1024: 计算字母序号,Java
- “1024“过节啦
- Xshell7中如何切换用户(1024!!!)
- 1024 Palindromic Number (25 分)
- 字节(计算机单位)-1024
- 剪剪剪 1024
- HDU 1024 Max Sum Plus Plus(求m个不相交连续子序列最大和/01背包)
- HDU--1024--段子序列和最大
- PAT乙级——1024(模拟数字转换)
- HOJ 1024 Max Sum Plus Plus(线性DP,滚动数组,经典)