摘要:
可交换的最大子段和 题目模型 \(n\) 个整数组成的序列$a_1,a_2,...,a_n$,你可以对数组中的一对元素进行交换,并且交换后求 \(a_1\) 至 \(a_n\) 的最大子段和,所能得到的结果是所有交换中最大的。当所给的整数均为负数时和为0。 例如:${-2,11,-4,13,-5,- 阅读全文
摘要:
最大M子段和 题目模型 N个整数组成的序列 \(a_1,a_2,a_3,…,a_n\) ,将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。 问题分析 方法一: 看到序列,我们首先要尝试用线性dp去处理,线性dp经典状态定义:f[i][j],i一般表示序列的前i个元素,j表示限制,这里 阅读全文
摘要:
带长度限制的最大子段和 题目模型 一个整数序列$a_1,a_2,……,a_n$ ,求最大的长度不超过K的子段的数值和。 问题分析 求以a[i]结尾的最大子段和,我们需要维护一个最小的前缀sum[j],即[j+1,i]为所求。 但要求子段和区间长度不能大于K,则需要满足:i-j<=k。 如果j'>j且 阅读全文
摘要:
环形最大子段和 题目模型 把模型一的线性变成环形。有一个修改,不允许区间为空。 问题分析 方法一: 环形数组的连续最大子段和,有两种情况。 最大和的这个子段没有包含头尾。此时跟线型一样。 定义dp[i]表示以a[i]结尾的最大子段和。 转移方程:dp[i]=max(dp[i-1]+a[i],a[i] 阅读全文
摘要:
单点修改,区间查询的最大子段和 题目模型 我们对问题进行扩展,如果对序列有两种操作: 修改序列的某个元素的值 查询序列$[l,r]$的区间和。 题目模型见P4513 小白逛公园 问题分析 单点修改,区间查询显然要用线段树。 类似上面分治,区间最大字段和有三种情况: 最大子段和在左子树。 最大子段和在 阅读全文