2016暑期ACM学习
4334-Trouble
(http://acm.hdu.edu.cn/showproblem.php?pid=4334)
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int mod=401704; //这里开到所有数据十倍左右大
__int64 a[5][210];
__int64 hash[mod];
bool color[mod];
int judge(__int64 x)
{
int s=x%mod;
if(s<0) s+=mod;
while(color[s]&&hash[s]!=x)
s=(s+1)%mod;
return s;
}
int main()
{
int T, n;
cin >> T;
while(T--)
{
scanf("%d",&n);
memset(color,0,sizeof(color));
for(int i=0; i<5; i++)
for(int j=0; j<n; j++)
scanf("%I64d",&a[i][j]);
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
__int64 sum=-(a[0][i]+a[1][j]);
int h=judge(sum);
color[h]=1;
hash[h]=sum;
}
bool ok=false;
for(int i=0; i<n&&!ok; i++)
for(int j=0; j<n&&!ok; j++)
for(int k=0; k<n&&!ok; k++)
{
__int64 sum=a[2][i]+a[3][j]+a[4][k];
int h=judge(sum);
if(color[h])
{
ok=true; break;
}
}
if(ok) printf("Yes\n");
else printf("No\n");
}
return 0;
}