#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
bool used[30];
int a[30];
int m,len;
bool dfs(int isin,int cur,int k){
if(isin==3) return 1;
int i;
for(i=k;i>=1;i--){
if(used[i]==1) continue;
used[i]=1;
if(cur+a[i]==len){
if(dfs(isin+1,0,m))
return 1;
}
else if(cur+a[i]<len)
if(dfs(isin,cur+a[i],i-1))
return 1;
used[i]=0;
}
return 0;
}
int main(){
int n;
int i;
scanf("%d",&n);
while(n--){
memset(used,0,sizeof(used));
int sum=0;
scanf("%d",&m);
for(i=1;i<=m;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+m);
if(sum%4!=0||a[m]>sum/4||m<4){
printf("no\n");
continue;
}
len=sum/4;
if(dfs(0,0,m))
printf("yes\n");
else
printf("no\n");
}
return 0;
}
hdu1518 Square
最新推荐文章于 2024-08-25 08:45:00 发布