分析 根据题意,我们可以得出是要求两两数字之间的差值的平方,由于数据很多,的暴力是肯定不行的。 那么我们只能写一个O(n)的算法,所以会想到求前缀和。 求解 这边由于都是差值,所以得进行一个转化,使得他成为前缀和的形式。 先排序,再两两做差即可。 int n; scanf("%d",&n); ll a[500010]; for (int i = 0;i < n;i ++) scanf("%lld",a + i); // 读入 sort(a,a + n); // 排序 n --; // 由于两两做差之后,数字个数就会减少1 for (int i = 0;i < n;i ++)...