24分求助,悬2关
  • 板块P1120 小木棍
  • 楼主cyhyeee
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/28 19:57
  • 上次更新2024/4/28 21:33:49
查看原帖
24分求助,悬2关
973237
cyhyeee楼主2024/4/28 19:57
#include<bits/stdc++.h>
#define ll long long
#define all(x) (x).begin(),(x).end()
#define cmax(x,y) x=max(x,y)
#define cmin(x,y) x=min(x,y)
#define add(x,y) x=(x+y)%mod
#define endl '\n'
#define re register

using namespace std;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
int min1;
int n,sum,p;
vector<int>a(70),w(4);
bool f=0;
void dfs(int d){
	if(f) return;
	if(d==n){
		f=1;
		cout<<p;
		return;
	}
	for (re int i=0;i<4;i++){
		if(a[d]<=w[i]){
			w[i]-=a[d];
			dfs(d+1);
			w[i]+=a[d];
		}
	}
}
signed main(){
	cin>>n;
	for (re int i=0;i<n;i++){
		cin>>a[i];
		sum+=a[i];
	}
	sort(all(a),greater<int>());
	for (re int i=sum;i>0;i--){
		if((sum%i)==0&&(sum/i)>=a[0]){
			f=0;
			p=sum/i;
			fill(all(w),p);
			dfs(0);
			if(f) return 0;
		}
	}
	return 0;
}

感觉大致思路没错,但是又WA又T

2024/4/28 19:57
加载中...