题解如下
2024-03-03 16:05:23
发布于:上海
2阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
long long count_right_triangles(vector<pair<int, int>>& points) {
unordered_map<int, int> x_freq;
unordered_map<int, int> y_freq;
// 分别统计 x 和 y 坐标的频率
for (auto& point : points) {
x_freq[point.first]++;
y_freq[point.second]++;
}
// 对于每个点,使用 x 和 y 的频率来计算三角形的数量
long long count = 0;
for (auto& point : points) {
count += (long long)(x_freq[point.first] - 1) * (y_freq[point.second] - 1);
}
return count;
}
int main() {
int N;
cin >> N;
vector<pair<int, int>> points(N);
for (int i = 0; i < N; ++i) {
cin >> points[i].first >> points[i].second;
}
cout << count_right_triangles(points) << endl;
return 0;
}
这里空空如也
有帮助,赞一个