解决数学公式的方法:贡献法,化简,拆开公式,贪心
此题需要将公式拆开(jb,打不出来+号)
预处理上面的值就可以了
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+10;
ll a[N];
ll n,x,y,z;
//(x^2-2*x*i-i^2)a_i
//x^2*a_i-2*x*i*a_i-i^2*a_i
int main(){
cin >> n;
for(ll i=1;i<=n;i++){
cin >> a[i];
x+=a[i],y+=i*a[i],z+=i*i*a[i];
}
ll res=0x7fffffffffffffff;
for(ll i=1;i<=n;i++) res=min(res,i*i*x-2*i*y+z);
cout << res << endl;
return 0;
}