A
link
如果想要\(x_1+y_2=x_2+y_1\),就是\(x_1-x_2=y_1-y_2\)即可,那么我们可以存一下每一个\(i\)的\(x\)与\(y\)的差,每到一个\(i\)就看一下前面有几个的差和它相等,这一个就可以和多少个组上对。
点击查看代码
#include<bits/stdc++.h>using namespace std;int n,ans;
int x[1000005],y[1000005];
int c[1000005];
map<int,int> mp;signed main(){cin >> n;for(int i = 1;i <= n;++ i){scanf("%d %d",&x[i],&y[i]);c[i] = y[i]-x[i];}for(int i = 1;i <= n;++ i){ans += mp[c[i]];mp[c[i]]++;}cout << ans;return 0;}