题意:求两段连续不相交的长度为k的序列的和的最大值。思路:dp+前缀和。定义状态:dp[i]为[1,i]区间内所有长度为k的区间的最大值。那么当我们枚举到区间[i+1,i+k+1]时,我们把这个区间作为右区间,然后他的左区间里的最大值也就是[1,i]里的最大值。就是dp[i],可以通过O(1)的时间得到。所以复杂度就足够了。注意点:当我们从k开始枚举的时候,我们先记录k的dp,然后从k+1开始枚举,这样子当所有数都为负数时,也还是可以成功dp。不然很显然,dp的原始值0比负数大,就不能成功dp了,见代码。 #include<iostream> #include<stdio.h...