TLE on #30 求助 差7ms
  • 板块P1120 小木棍
  • 楼主Mayoker
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/19 17:28
  • 上次更新2023/10/23 15:22:01
查看原帖
TLE on #30 求助 差7ms
275373
Mayoker楼主2023/5/19 17:28

有没有dalao帮忙看看,已经调了一个下午了QAQ

#include<bits/stdc++.h>
using namespace std;
const int N=70;

int n,ans,mx,sum;
int a[N],b[N];
int ds,ml;

bool dfs(int cnt,int cur,int lst){
	if(cnt>=ds){
		printf("%d",ml);
		exit(0);
	}
	if(cur==ml) return dfs(cnt+1,0,0);
	
	int f=0;
	for(int i=lst+1;i<=n;++i){
		if(b[i]) continue;
		if(a[i]==f) continue;
		if(cur+a[i]>ml) continue;
		b[i]=1;
		if(dfs(cnt,cur+a[i],i)) return 1;
		b[i]=0;
		f=a[i];
		if(cur==0||cur+a[i]==ml) return 0; 
	}
	return 0;
}

inline bool cmp(int a,int b){return a>b;}

signed main(){
	//ios::sync_with_stdio(false);
	//cin.tie(0),cout.tie(0);
	
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
		scanf("%d",&a[i]),mx=max(mx,a[i]),sum+=a[i];
	sort(a+1,a+1+n,cmp);
	
	for(int i=mx;i<=sum;++i){
		if(sum%i) continue;
		ds=sum/i,ml=i;
		if(dfs(1,0,0)) break;
	}
	
	return 0;
}
2023/5/19 17:28
加载中...