题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1911
题意:给定一个数列,将其分成若干段,若某段的和为x则这段的价值为a*x*x+b*x+c。求一种分法使得总价值最大?
思路:设p(x)=a*x*x+b*x+c,s[i]表示前i项和,f[i]=max(f[j]+p(s[]-s[j])),那么对于两个j1,j2,若j1<j2,j2优于j1,令dy(j1,j2)=(f[j1]+a*sqr(s[j1])-b*s[j1])-(f[j2]+a*sqr(s[j2])-b*s[j2]),dx(j1,j2)=2*a*(s[j1]-s[j2]),则有:s[i]>=dy(j1,j2)/dx(j1,j2)。
#include #include #include #include #include #include #include #include #include #include #include