1 条题解
-
0
要解决这个问题,我们需计算学生们根据比赛得分获得的糖果总数。具体来说,如果学生 的得分高于学生 ,那么学生 将获得 颗糖果。我们需要计算所有学生获得的糖果总和。
核心思路
使用前缀和数组来快速计算排序后数组中前 个元素的和。这样,对于排序后的每个元素 ,其贡献的糖果数可以通过 计算,其中 是前 个元素的和。
::::success[AC代码]
#include <bits/stdc++.h> #define int long long using namespace std; int n, ans, a[10000005], sum[10000005]; signed main() { cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a, a + n); for (int i = 0; i < n; i++) { sum[i + 1] = sum[i] + a[i]; } for (int i = 0; i < n; i++) { ans += a[i] * i - sum[i]; } cout << ans << '\n'; return 0; }::::
- 1
信息
- ID
- 9646
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者