@[cy1999_de_dog](/user/442801)
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
long long dp[N],sum[N];
int q[N];
long long a,b,c;
long long x(int i)
{
return sum[i];
}
long long y(int i)
{
return dp[i]+a*sum[i]*sum[i]-b*sum[i];
}
double xl(int i,int j)
{
return 1.0*(y(i)-y(j))/((x(i)-x(j)));
}
signed main()
{
int n;
cin>>n>>a>>b>>c;
for(int i=1;i<=n;i++)
{
long long d;
cin>>d;
sum[i]=sum[i-1]+d;
}
int l=0,r=0;
for(int i=1;i<=n;i++)
{
long long k=2*a*sum[i];
// int j1=q[l],j2=q[l+1];
// while(l<r&&(xl(j1,j2)>k)) l++;
while(r - l + 1 >= 2 && xl(q[l], q[l + 1]) > k)
{
l++;
}
int j=q[l];
dp[i]=dp[j]+a*(sum[i]-sum[j])*(sum[i]-sum[j])+b*(sum[i]-sum[j])+c;
while(r - l + 1 >= 2 &&xl(q[r - 1], q[r])<=xl(q[r],i))
{
r--;
}
q[++r]=i;
}
cout<<dp[n]<<endl;
return 0;
}
```
by cmaths @ 2023-11-13 21:40:25
%%%,谢谢谢佬
by cy1999_de_dog @ 2023-11-13 21:43:44