#include<iostream> #include<vector> #include<algorithm> using namespace std; int m,n; int MinTime(int p,int q,vector<int>& v ,int *a); int main(){     //m节 n task     cin>>m;     cin>>n;     int a[n+1];     for(int i=1;i<=n;++i){         cin>>a[i];     }     vector<int> v(m+1,0);     //第1个节点,累计分配了0个任务;     int res=MinTime(1,0,v,a);     cout<<res;     return 0; } // p表示分配到了第几个节点 q表示已经分配了多少任务。 int MinTime(int p,int q,vector<int>& v ,int *a){     if(p==m+1&& q==n){         int res=INT_MIN;         int cur=0;         for(int i=1;i<v.size();++i){             //节点对应的任务书             //cout<<i<<":"<<v[i]<<endl;             int temp=0;             for(int j=1;j<=v[i];j++){                 temp+=a[j+cur];             }             res=max(temp,res);             cur+=v[i];         }         return res;     }else if(p==m+1 && q!=n){         return INT_MAX;     }     int res= INT_MAX;     //n-q 剩余的task数     for(int i=1;i<=n-q-(m-p);i++){          v[p]=i;         res=min(res,MinTime(p+1,q+i,v,a));         v[p]=0;     }     return res; }
点赞 评论

相关推荐

牛客62533758...:华为不卡双非,而是卡院校hhhh
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务