c_hhc_互补二元组(延迟计数+简单公式变换)
给定N个整数二元组(X1, Y1), (X2, Y2), ... (XN, YN)。
请你计算其中有多少对二元组(Xi, Yi)和(Xj, Yj)满足Xi+Xj = Yi+Yj且i < j。
思路:因为
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll n, ans;
unordered_map<int, int> m;
int main() {
std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin>>n;
for (int i=0; i<n; i++) {
int a,b; cin>>a>>b;
if (i==0) m[a-b]++;
else {
ans+=m[b-a];
m[a-b]++;
}
}
cout<<ans;
return 0;
}