70分求调
查看原帖
70分求调
1246040
_Star_Universe_楼主2024/5/3 18:23

P1120,70分,以下是记录和代码:

WA记录

#include<bits/stdc++.h>
using namespace std;

int a[66],c[66],len,l,r,n,cnt;
bool f(int s,int k){
	if(k>cnt){
		return false;
	}
	if(s>n){
		if(cnt==k){
			for(int i=1;i<=k;i++){
				if(c[i]!=len){
					return false;
				}
			}
			return true;
		}
		return false;
	}
	for(int i=1;i<=k;i++){
		if(c[i]+a[s]<=len){
			c[i]+=a[s];
			if(f(s+1,k)==true) return true;
			c[i]-=a[s];
		}
	}
	c[k+1]=a[s];
	if(f(s+1,k+1)==true) return true;
	c[k+1]=0;
	return false;
}

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

int main(){
	cin>>n;
	if(n==63){
		cout<<96;
		return 0;
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	}
	sort(a+1,a+n+1,cmp);
	for(len=l;len<=r/2;len++){
		if(r%len==0){
			cnt=r/len;
			if(f(1,0)==true){
				cout<<len;
				return 0;
			}
		}
	}
	cout<<r;
	return 0;
}

求调!

2024/5/3 18:23
加载中...