求救!最后一个点264ms怎么调?
查看原帖
求救!最后一个点264ms怎么调?
1068626
cqbz_sysxc楼主2023/8/22 20:46

求助大佬

87分,最后一个点T掉怎么调(下附代码)

#include <bits/stdc++.h>
using namespace std;
int n, a[65], sum, hh, len;
bool f[65];
bool cmp(int x, int y){
	return x > y;
}
bool DFS(int cnt, int id, int num){
//	printf("%d %d---%d %d\n", cnt, num, len, sum/len);
	if(cnt > hh){
		printf("%d", len);
		exit(0);
	}
	if(num == len) return DFS(cnt + 1, 1, 0);
	int fl = 0;
	for(int i = id; i <= n; i++){
		if(f[i]) continue;
		if(num + a[i] <= len && a[i] != fl){
			f[i] = true;
			if(DFS(cnt, i + 1, num + a[i])) return true;
			fl = a[i];
			f[i] = false;
			if(num == 0 || num + a[i] == len) return false;
		}
	}
	return false;
}
int main(){
	int Max=0;
	scanf("%d", &n);
	for(int i = 1; i <= n; i++){
		scanf("%d", &a[i]);
		sum += a[i];
		Max = max(Max, a[i]);
	}
	stable_sort(a + 1, a + 1 + n, cmp);
	for( len = Max; len <= sum; len++){
		if(sum % len == 0){
			hh = sum / len;
			if(DFS(1, 1, 0)){
				break;
			}
		}
	}
	return 0;
} 
2023/8/22 20:46
加载中...