啥也不会的蒟蒻求助
  • 板块灌水区
  • 楼主Fishmaster
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/8 21:42
  • 上次更新2023/10/28 07:00:34
查看原帖
啥也不会的蒟蒻求助
531258
Fishmaster楼主2022/3/8 21:42

P1120 下面的代码大红大紫的,只拿了 2424 分,查了半天死活查不出错误,求各位万能的谷民帮帮这个啥也不会的蒟蒻吧 qaq

#include<bits/stdc++.h>
using namespace std;
int n,tot,cnt,l,len[75],arr[75],pr[75];
void dfs(int u,int k,int p){
	if(u==0){dfs(l,k-1,arr[cnt]);return;}
	if(k==0){cout<<l;exit(0);}
	p=p<u?p:u;
	while(p&&len[p]==0)p--;
	while(p){
		if(len[p]){
			len[p]--;
			dfs(u-p,k,p);
			len[p]++;
			if((u==p)||(u==l))return;
			p=pr[p];
		}else p=pr[p];    
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
        int tmp;
        cin>>tmp;
        if(tmp>50)continue;
        arr[++cnt]=tmp,len[tmp]++,tot+=tmp;
    }
	sort(arr+1,arr+1+cnt);
	for(int i=1;i<=cnt;i++)
		if(arr[i]!=arr[i-1])pr[arr[i]]=arr[i-1];
	for(l=arr[cnt];l<=(tot>>1);l++)
		if(tot%l==0)dfs(l,tot/l,arr[l]);
	cout<<tot;
	return 0;
}
2022/3/8 21:42
加载中...