1 条题解

  • 2
    @ 2025-12-11 21:02:07

    n最大只到20,用dfs枚举所有分组方式并更新ans即可

    #include<bits/stdc++.h>
    using namespace std;
    int n,s,sum,ans,k[30];
    void dfs(int w)
    {
    	if(w==n+1)
    	{
    		ans=min(ans,max(sum,s-sum));
    		return;
    	}
    	sum+=k[w];dfs(w+1);
    	sum-=k[w];dfs(w+1);
    	return;
    }
    int main()
    {
    	ios::sync_with_stdio(0);
    	cin.tie(0);cout.tie(0);
    	cin>>n;ans=(1<<30);
    	for(int i=1;i<=n;i++)cin>>k[i],s+=k[i];
    	dfs(1);cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    7931
    时间
    2000ms
    内存
    1024MiB
    难度
    6
    标签
    递交数
    19
    已通过
    12
    上传者