先来看一看时间与空间限制,以免等一会儿提交后超时了
时间限制 : - MS 空间限制 : - KB |
评测说明 : 1s 256MB |
这一道题我们需要使用使用前缀和等
在这里我给大家科普一下前缀和,前缀平方和,后缀和的代码
前缀和:sum[i]=sum[i-1]+a[i];
前缀平方和:sum[i]=sum[i-1]+a[i]*a[i];
后缀和:sum[i]=sum[i+1]+a[i]
有了这三个代码我们的这道题就非常简单了,但是注意这一道题又要累加,又要累乘,内存会很大所以一定要开long long,说了这么多来看看代码吧
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
c[i]+=c[i-1]+a[i]*a[i];
}
for(int i=1;i<=n;i++)
{
long long t=c[i]*(sum[n]-sum[i]);
ans=max(ans,t);
}
这就是这个题最关键的代码,其他的自己动脑筋想一想吧!