Problem Address:http://poj.org/problem?id=2018
简单说思路,就不发代码了。
DP思路:
dp[i]表示以某个点位结尾的最优值。
要么来源于[ i-k+1, i ] 这k个数的值。
要么来源于dp[ i-1]与第i个数合并的值。
实现很简单。
二分思路:
只是看到,不过没写。
从0.0000到2000.0000,以0.0001为单位,在这个区间二分。
取中值表示均值,构造新数列为原数列减去均值。
dp新数列求其最大和子段,并根据结果进行二分运算,大于零则对上半部分区间二分,小于零则对下半部分二分。
由于最终答案只有一个,所以二分后当最大和子段为零时运算结束,即为最终均值。
此外还有凸包等其他思路,只能等以后慢慢学习。