|
|
发表于 2023-11-18 22:53:01
|
显示全部楼层
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 3e5 + 10;
- typedef long long ll;
- vector<ll> a[N];
- int main() {
- ll n, x, ans = 0;
- cin >> n; // 读入数组长度
- for (ll i = 1; i <= n; i++) {
- cin >> x; // 读入数组元素
- a[x].push_back(i); // 将元素的下标加入对应值的数组中
- }
- for (ll i = 1; i <= n; i++) {
- ll len = a[i].size(); // 获取当前值对应的数组的长度
- for (ll k = 1; k < len; k++) {
- ans += k * (len - k) * (a[i][k] - a[i][k-1] - 1);
- // 计算符合条件的元素对的数量并累加到答案中
- }
- }
- cout << ans << endl; // 输出结果
- return 0;
- }
复制代码
这段代码的作用是计算一个数组中符合一定条件的元素对的数量。具体来说,对于每个元素 x,统计数组中值为 x 的元素的下标对 (i, j),其中 i < j 且 a[i] != a[j],最后将符合条件的元素对的数量相加并输出。
希望这样的回答对你有所帮助。 |
|