先来看看题目的空间和时间限制:
时间限制 : - MS 空间限制 : - KB |
评测说明 : 1s 256MB |
样例输入
5
2
1
4
3
5
样例输出
168
先 浅浅地 科普 (拓展)一下:
前缀和:sum[i]=sum[i-1]+a[i];
前缀平方和:sum[i]=sum[i-1]+a[i]*a[i];
后缀和:sum[i]=sum[i+1]+a[i];
(这三个东西有了就简单了,不附AC代码)
注意事项:
这个要开long long哦!数那么大!
为什么呢?
因为它又在累加,又在累乘。
部分代码:
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
svc[i]+=svc[i-1]+a[i]*a[i];
}
for(int i=1;i<=n;i++){
long long rp=svc[i]*(sum[n]-sum[i]);
ans=max(ans,rp);
}
printf("%lld",ans);
行了,就这么多,其余的自己写吧……