[HNOI2011] 任务调度

发布时间:2021-06-13 13:28:20

题目描述:

有N个任务,每个任务有两个参数 A B
分别表示本任务在机器A上运行的时间和机器B上运行的时间
有三种类型的任务
1 任务需要先在A上运行再在B上运行
2 任务需要先在B上运行再在A上运行
3 任务谁先都可以
求运行完这些任务的最少时间


题目分析:

先暴力枚举3任务,将这个任务归为1或者二任务
贪心:
所有先做任务A的按照a时间从大到小排序,先做任务B的同
随机化:
然后每次随机交换两个任务的位置,看这样会不会更优
应该算个爬山,模拟退火也能写


题目链接:

Luogu 3212
BZOJ 2336


Ac 代码:

#include
#include
#include
#include
#include
#include
const int maxm=30;
const int T=4000;
int a[maxm],b[maxm],opt[maxm];
int n;
int ans=0x7fffffff;
int stk1[maxm],stk2[maxm];
int top1,top2;
inline bool comp1(int x,int y)
{
return b[x]==b[y]?a[x]b[y];
}
inline bool comp2(int x,int y)
{
return a[x]==b[y]?b[x]a[y];
}
inline int getans()
{
int timea=0,timeb=0;
for(int i=1;i<=top2;i++) timeb+=b[stk2[i]];
for(int i=1;i<=top1;i++)
{
timea+=a[stk1[i]];
if(timea<=timeb) timeb+=b[stk1[i]];
else timeb=timea+b[stk1[i]];
}
int tmp=timeb;
timea=timeb=0;
for(int i=1;i<=top1;i++) timea+=a[stk1[i]];
for(int i=1;i<=top2;i++)
{
timeb+=b[stk2[i]];
if(timeb<=timea) timea+=a[stk2[i]];
else timea=timeb+a[stk2[i]];
}
return std::max(tmp,timea);
}
inline void work()
{
top1=top2=0;
for(int i=1;i<=n;i++)
if(opt[i]==1) stk1[++top1]=i;
else stk2[++top2]=i;
std::sort(stk1+1,stk1+top1+1,comp1);
std::sort(stk2+1,stk2+top2+1,comp2);
int tmp=getans();
for(int i=1;i<=T;i++)
{
if(top1)
std::swap(stk1[rand()%top1+1],stk1[rand()%top1+1]);
if(top2)
std::swap(stk2[rand()%top2+1],stk2[rand()%top2+1]);
tmp=std::min(tmp,getans());
}
ans=std::min(ans,tmp);
}
void dfs(int now)
{
if(now==n+1)
{
work();
return;
}
if(opt[now]==1) dfs(now+1);
else if(opt[now]==2) dfs(now+1);
else
{
opt[now]=1;
dfs(now+1);
opt[now]=2;
dfs(now+1);
opt[now]=3;
}
}
int main()
{
srand(541213);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d%d",&opt[i],&a[i],&b[i]);
dfs(1);
printf("%d
",ans);
return 0;
}

相关文档

  • MYSQL 备份方案
  • 四六级写作最后提分:推荐引用例句(42)
  • 招聘的技巧
  • 《塔顶上的猫》读后感(12)
  • 馒头的自诉
  • 荷花仿写作文600字
  • 政治高考计算题训练
  • JVM 性能分析的常用工具
  • 删除二叉树的所有叶子结点
  • 王安石的经典古诗文欣赏
  • 文件编码问题
  • 酒店员工宿舍打架检讨书
  • C# 计算太阳倾角、太阳高度角
  • 年轻,无权享受 ——罗 西
  • 2020年个人山场承包合同范文3篇
  • 诚信伴我同行的作文
  • 分布式赛道上爆火??Filecoin 挖矿【花说区块链】
  • 陶瓷咖啡杯排行榜前十名
  • 益阳有哪些特色小吃 湖南益阳特产
  • 上海博物馆考察报告范文
  • 实用的早安共勉句子65条
  • 浅谈新课程理念下的高中生物教学高中生物新课程理念
  • 日均百亿级日志处理:微博基于 Flink 的实时计算平台建设
  • 姓韦女宝宝取名有含义的名字
  • 节目表演邀请函
  • 辽宁红海滩导游词五篇
  • kafka解决了什么问题?
  • 最新十一国庆节祝福语精选
  • springboot日志写入mysql_SpringBoot集成logback将日志输出到MySQL数据库
  • 初中七年级下地理知识点
  • 猜你喜欢

  • 2020年猴年元旦贺词
  • 1例巨大声带息肉合并睡眠呼吸暂停综合征患者围手术期的护理
  • win10更新后Vmware无法再windows上运行解决办法
  • 河南工业大学后勤集团XX年工作要点
  • 长沙银翔投资管理有限公司企业信用报告-天眼查
  • 谁将为我们的冷漠买单?
  • 2019高考地理综合题的答题技巧语文
  • 2018版语文粤教版选修《唐诗宋词元散曲选读》课件:第二单元 8 杜牧诗三首
  • 安全评价(加油站)工作中有关问题的探讨?关于《危险化学品经营单位安全评价导则(试行)》执行中的问题
  • 2014年中国其他农、林、牧、渔业机械制造行业TOP30企业排名
  • (10份试卷合集)安徽马鞍山市第二中学2019年政治高一下学期期末模拟试卷
  • 我学会了画画_学*画画的作文500字
  • 人力资源管理师培训2016第一章人力资源规划
  • 【部编新教材】2019秋季学期统编版语文五年级(上)《3 桂花雨》一课一练(含答案)--课时夯基训练
  • 2019-现货华鹬屑督坛台2019修订版)-文档资料
  • 大王卡喜马拉雅免流吗
  • 集美大学诚毅学院“亚德客有美助学金”申请表
  • 开关插座安装技术交底
  • pycharm中用gulb创建scss
  • 小学一年级下册数学:《练习十五 100以内的加减混合运算》期末复习
  • 【SpringBoot必备】Spring Boot 中 SPI 机制
  • (含2017年中考题)第二十一章 一元二次方程章末复习题课件_2
  • 关于色彩的感情与象征意义的赞美之词
  • 深圳海源电子科技有限公司(企业信用报告)- 天眼查
  • 关于编制圆通印花镍网项目可行性研究报告编制说明
  • 华为h30c00emui2.3
  • 向幸福出发2018全集 幸福的两个方向
  • 六一节演讲稿范文
  • 2018_2019学年二年级数学上册第四单元表内除法(一)课时2平均分(2)作业课件苏教版
  • 最新 小学生英语演讲稿10句(精选多篇) 讲话 致辞
  • 2020年高考化学一轮复*第7章第3节化学*衡常数及其计算课件3
  • 2015年高二物理同步检测1.4《动量守恒定律的应用》(第2课时)(教科版选修3-5)
  • 写给母亲生日祝福
  • 【2019-2020】雅思口语话题素材-精选word文档 (1页)
  • 高考化学-第34讲-物质的检验分离和提纯复*课件
  • 初一写人作文 : 我的外婆_900字
  • 2013年新疆维吾尔自治区成人高校招生工作实施办法
  • 2015年中考语文说明文阅读答题技巧
  • 重庆市涪陵区丰庆农化有限公司堡子第三经营部企业信用报告-天眼查
  • 初二作文:幸福是一个久违的怀抱作文800字
  • 【配套K12】七年级音乐下册第5单元演唱信牛教案2人音版
  • 第三章黄河水利职业技术学院精品课程建设
  • 电脑版