1 条题解

  • 1
    @ 2025-7-5 12:32:14
    #include<iostream>
    #include<string>
    #include<algorithm>
    #include<bits/stdc++.h>
    using namespace std;
    int n,k;
    int a[7001],ans=9999999,s[7001]; 
    bool cmp(int x,int y){
     return x>y;
    }
    void dfs(int x,int y){//x为当前第i个任务,y为用时最大值 
     if(ans<=y) return ;//剪枝 
     if(x==n){
      if(y<ans){
       ans=y;
       
      }
      return ;
     } 
     for(int i=0;i<k;i++){
      if(s[i]+a[x]<ans){ 
       s[i]+=a[x];
       dfs(x+1,max(y,s[i]));
       s[i]-=a[x];
      }
     }
    } 
    int main(){
    
     cin>>n>>k;
     for(int i=0;i<n;i++){
      cin>>a[i];
     }
     sort(a,a+n,cmp);
     dfs(0,0);
     cout<<ans;
     return 0;
    }
    
    • 1

    信息

    ID
    138
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    (无)
    递交数
    215
    已通过
    52
    上传者