对每一个i(0<=i<n-1),算出区间[0,i]可以取的最大值left[i]和区间(i,n-1]的最大值right[i+1],他们的和为sum[i].left和right可以通过预处理,在计算时直接查出.
则所求为所有sum[i]中的最大值.(>0的数字少于2个的话特殊处理一下)
left的预处理:设一变量s初始为0,一直往右加,为负的时候则置0.left[i]为max(当前的s值,left[i-1]).
right同理,方向相反
一开始也是这么想的,不过在计算右区间最大值时还是想的从左到右的方向,成了O(n^2)了......
感觉这题还是挺强的...mark一下~