0
已解决
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[7],z[21],n,m,maxn;
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>z[i];
sort(z+1,z+n+1,cmp);
for(int i=1;i<=min(m,n);i++){
a[i]+=z[i];
maxn=max(maxn,a[i]);
}
for(int i=m+1;i<=n;i++){
int d,minn=0x3f3f3f3f;
for(int j=1;j<=m;j++){
if(a[j]<minn){
d=j;
minn=a[j];
}
}
a[d]+=z[i];
maxn=max(maxn,a[d]);
}
cout<<maxn;
return 0;
}
WA10分
请问为什么错了?
武奕楷在2021-09-23 13:06:40追加了内容
顶!
0
已采纳
全局:
int n, k, a[30], mach[30];
int ans = 0x3f3f3f3f;
bool cmp(int a, int b){
return a > b;
}
void dfs(int step, int Max){
if(Max>=ans) return;
if(step==n+1){
if(Max<ans)
ans=Max;
return;
}
if(Max>ans) return;
for(int i=1;i<=k;i++){
if(mach[i]+a[step]>ans) continue;
mach[i]+=a[step];
dfs(step+1,max(Max, mach[i]));
mach[i]-=a[step];
}
}
主函数:
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a + 1, a + n + 1, cmp);
mach[1]+=a[1];
dfs(2, a[2]);
printf("%d",ans);
0
0
