[Hash思想]UVa1152 - 4 Values whose Sum is 0

来源:互联网 发布:炼数成金 大数据分析师 编辑:程序博客网 时间:2024/06/07 04:07
#include<bits/stdc++.h>using namespace std;struct HashMAP{    static const int mask = 0x7fffff;    int p[8388608],q[8388608];    void Clear()    {        for(int i=0;i<=mask; ++ i) q[i]=0;    }    int& operator [] (int k){        int i;        for(i=k&mask; q[i]&&p[i]!=k;i=(i+1)&mask) ;            p[i]=k;        return q[i];    }}Hash;int main(){    int t;    scanf("%d",&t);    while(t--){        Hash.Clear();        int n,sum=0 ,a[4100],b[4100],c[4100],d[4100];        scanf("%d",&n);        for(int i=0;i<n;i++) scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)            Hash[a[i]+b[j]]++;        for(int i=0;i<n;i++)            for(int j=0;j<n;j++)            sum+=Hash[-(c[i]+d[j])];        printf("%d\n",sum);        if(t) printf("\n");    }    return 0;}

0 0