Get到了全新O(1)替代部分伸展树功能的姿势 左堆stk1维护当前信息,右堆stk2维护历史删除信息 题目求的是严格的前缀和(且小于当前指针)那就每次左堆新增时再更新前缀和信息就好 即使把题面换成最大字段和也是一样搞法 ...
分类:
其他好文 时间:
2018-02-02 23:14:28
阅读次数:
183
很经典的动态规划,Maxsum Plus dp[i][j]表示将i个数字,分为j的段不相交子段的最大字段和,容易得到: dp[i][j] = max(dp[i-1][j],dp[k][j-1])+a[i] k∈[j-1,i] 因为数据范围过大,对其方程式进行压缩: dp[i-1][j]+a[i] 表 ...
分类:
其他好文 时间:
2018-01-27 11:23:59
阅读次数:
128
题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的。 我的解法是:用sum[i]存前i项的和,也就是前缀和。 这题就变成了求sum[j]-sum[i]的大于0的最小值( j > i )。 我们可以看到直接循环运算量是50000*50000,会超时。 所以我们应该充分利用 ...
分类:
其他好文 时间:
2017-10-05 10:56:53
阅读次数:
228
题目链接 GSS GSS1 对于每个询问li, ri,查询a[li], a[li + 1], a[li + 2], ..., a[ri]这个序列的最大字段和。 建立线段树,每个节点维护四个信息 c:当前区间的元素和 lc:当前区间左端点开始的最大子序列和 rc:当前区间右端点结束的最大子序列和 re ...
分类:
其他好文 时间:
2017-09-30 22:48:26
阅读次数:
227
个人心得:这是一道好题,线性的最大字段和在动态规划中是司空见惯的。所以对于这种动态规划的思想的巧妙转变也是需要 锻炼的,就像在暑假集训里面碰到的从1到k是递增,k到n是递减的k使得此时的和最大,当时也是毫无办法,虽然后面 想到了分别将首尾展开然后分别求递增的最大和,题目就迎刃而解了。其实这一题题目的 ...
分类:
编程语言 时间:
2017-09-23 20:20:51
阅读次数:
247
N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。 N个整数组成的序列a[1],a[2],a[3],… ...
分类:
其他好文 时间:
2017-09-09 20:16:38
阅读次数:
122
Peter喜欢玩数组。NOIP这天,他从Jason手里得到了大小为n的一个正整数数组。Peter求出了这个数组的所有子段和,并将这n(n+1)/2个数降序排序,他想知道前k个数是什么。 不难想到,从最大字段和向下更新。 用set实现 介绍一下set:用法与priority_queue基本相同,区别是 ...
分类:
其他好文 时间:
2017-08-19 22:21:14
阅读次数:
286
今天看了一上午dp。看不太懂啊。dp确实不简单。今天開始学习dp,搜了杭电的dp46道,慢慢来吧。白书上的写的 又不太具体,先写几道题目再说。。。 题目连接:点击打开链接 思路:就是当当前的和是小于0的时候就又一次计数。大于或者等于0的时候都相加。。。 代码: /* Name: Copyright: ...
分类:
其他好文 时间:
2017-06-12 13:07:16
阅读次数:
235
1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5,-2,和最大的子段为:11, ...
分类:
其他好文 时间:
2017-04-10 23:09:36
阅读次数:
274
一道关于求最大M字段和的问题,翻译完题之后感觉很简单但就是写不来,后来仿佛推到一个dp式子了,对,仿佛...然后抄袭了个式子,嘿,和我的式子大体相似,然后就是很玄学的优化了...不多瞎bb了 1.首先,定义数组num[n],dp[m][n]. num[n]用来存储n个整数组成的序列.dp[i][j] ...
分类:
其他好文 时间:
2017-03-28 17:38:04
阅读次数:
216