求助玄关
查看原帖
求助玄关
716276
Pure_Love_Warrior楼主2024/9/6 15:30
#include"bits/stdc++.h"
#define int long long
using namespace std;
int n, m;
int sum;
int a[25], s[5];
bool flag;

void dfs(int x);
bool cmp(int x, int y);

signed main(){
	scanf("%lld", &n);
	while(n --){
//		cout << 1;
		sum = 0;flag = 0;
		scanf("%lld", &m);
//		cout << 2;
		for(int i = 1; i <= m; i ++){
			scanf("%lld", &a[i]);
			sum += a[i];
		}
//		cout << 3;
		if(sum % 4){
			cout << "no\n";
			continue;
		}
//		cout << 4;
		for(int i = 1; i <= 4; i ++){
			s[i] = sum / 4;
		}
//		cout << 5;
		sort(a + 1, a + m + 1, cmp);
//		cout << 6;
		dfs(1);
//		cout << 7;
		if(flag) cout << "yes\n";
		else{
			cout << "no\n";
		}
	}
	return 0;
}


void dfs(int x){
	if(flag) return ;
	if(x == n + 1){
		flag = 1;
		return ;
	}
	for(int i = 1; i <= 4; i ++){
		if(s[i] >= a[x]){
			s[i] -= a[x];
			dfs(x + 1);
			s[i] += a[x];
		}
	}
}

bool cmp(int x, int y){
	return x > y;
}

4, 10没过, 80分代码求调

2024/9/6 15:30
加载中...