80分代码求调
查看原帖
80分代码求调
1213705
chenyunting楼主2024/7/5 20:32
#include<iostream>
#include<algorithm>
#include<cstring>
typedef long long ll;
constexpr ll MAX_X=20;
ll N,a[1+MAX_X],X,l,cnt;
bool v[1+MAX_X];
bool cmp(ll x,ll y){
	return x>y;
}
void dfs(ll x){
	if(cnt==4)return;
	if(x>=l){
		if(x==l)
			cnt++,x=0;
		else
			return ;
		 
	}
	for(ll i=1;i<=X;i++){
		if(!v[i]&&x+a[i]<=l){
			v[i]=1;
			dfs(x+a[i]);
			v[i]=0;
		}
	}
} 
int main(){
	std::cin>>N;
	for(ll i=1;i<=N;i++){
		std::memset(v,0,sizeof(v));
		cnt=0,l=0;
		std::cin>>X;
		for(ll j=1;j<=X;j++){
			std::cin>>a[j];
			l+=a[j];
		}
		if(l%4!=0){
			std::cout<<"no"<<std::endl;
			continue;
		}
		std::sort(a+1,a+X+1,cmp);
		l/=4;
		dfs(0);
		std::cout<<(cnt==4?"yes":"no")<<std::endl;
	}
}
2024/7/5 20:32
加载中...