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;
}
posted @ 2020-11-12 22:57  童年の波鞋  阅读(143)  评论(0编辑  收藏  举报