ABC405C题解

题目是要求 \(\sum_{i = 1}^n\sum_{j = i+1}^na_ia_j\),实际上就是 \(\sum_{i = 1}^na_i(\sum_{j = i+1}^na_j)\),然后发现 \(\sum_{j = i+1}^na_j\) 可以用前缀和维护,于是就没了。
代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+5;
int a[N];
long long sum[N];
signed main()
{
    int n;
    scanf("%d",&n);
    for(int i = 1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i = n;i;i--)
    {
        sum[i] = sum[i+1]+a[i];
    }
    long long num = 0;
    for(int i = 1;i<n;i++)
    {
        num+=(long long)a[i]*sum[i+1];
    }
    printf("%lld",num);
    return 0;
}
posted @ 2025-05-13 21:01  林晋堃  阅读(16)  评论(0)    收藏  举报