博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最佳调度问题
阅读量:4878 次
发布时间:2019-06-11

本文共 743 字,大约阅读时间需要 2 分钟。

假设有n个任务由k个可并行工作的机器完成,完成任务i需要的时间为ti,对任意给定的整数n和k,以及完成任务i需要的时间ti,设计一个算法,求完成这n个任务的最佳调度,使得完成全部任务的时间最早。 

第一行有2个正整数n和k,第二行有n个正整数,表示ti 

n<7000,c<maxlongin

样例输入

7 32 14 4 16 6 5 3

 

样例输出

17
#include<bits/stdc++.h>
using
namespace
std;
long
long
n,m,a[7001],z[7001],ans=10000000000;
inline
void
dfs(
int
k,
long
long
zhi)
{
    
if
(k==n)
    
{
        
ans=min(ans,zhi);
        
return
;
    
}
    
if
(zhi>=ans)
    
return
;
    
for
(
int
i=0;i<m;i++)
    
{
        
if
(z[i]+a[k]<=ans){
        
z[i]+=a[k];
        
dfs(k+1,max(zhi,z[i]));
        
z[i]-=a[k];
        
}
    
}
}
bool
qwe(
int
a,
int
b)
{
    
return
a>b;
}
int
main()
{
    
cin>>n>>m;
    
for
(
int
i=0;i<n;i++)
    
{
        
scanf
(
"%d"
,&a[i]);
    
}
    
sort(a,a+n,qwe);
    
dfs(0,0);
    
cout<<ans;
}
dfs数据类型前的inline把时间由152ms->140ms,
由大到小排序,把时间从2000++ms->152ms

转载于:https://www.cnblogs.com/fanhao050109/p/11154185.html

你可能感兴趣的文章
【poj3537】 Crosses ans Crosses
查看>>
【poj1013】 Counterfeit Dollar
查看>>
Centos7 安装配置Apache+Mysql5.7+PHP7.0+phpmyadmin
查看>>
最佳调度问题
查看>>
10.04 FZSZ模拟Day1 总结
查看>>
RabbitMQ学习以及与Spring的集成(二)
查看>>
Go语言数据类型
查看>>
User Get 'Access Denied' with Excel Service WebPart
查看>>
C# 读取WAV文件(详细)
查看>>
web服务器,验证码,Xftp使用方法
查看>>
割点 - 模板
查看>>
Ubuntu 16.04.6 + Win10 双系统时间错误且不一致
查看>>
第三次作业——结对编程
查看>>
ora-12899解决方法
查看>>
(8)关于flexbox的一些想法。
查看>>
一台机子同时启动两个相同版本的tomcat
查看>>
剑指offer——python【第29题】最小的K个数
查看>>
带你入门代理模式/SpringAop的运行机制
查看>>
参考的博客
查看>>
移动端适配方案
查看>>