洛谷P2751 工序安排Job Processing
任务调度贪心。
需要明确一点,任务调度贪心题,并不是简单地应用排序的贪心,而是动态的运用堆,使每次选择是都能保持局部最优,并更新状态使得下次更新答案可以取到正确的最小值。
这是A过程的解。
然后考虑B过程则需要从最后的物体开始操作,可以使时间最小,取每个物体最后完成的最大值。而且使每个物体都花费最小时间,总的时间肯定也是最小的。
#include <bits/stdc++.h>
using namespace std;
int n, m1, m2, ans[1000010], ans2;
struct c{
int t, cos;
bool operator < (c a) const {
return a.t < t;
}
}A[43], B[43];
priority_queue <c> q;
int main()
{
scanf("%d%d%d", &n, &m1, &m2);
for (int i = 1; i <= m1; i++)
scanf("%d", &A[i].cos), A[i].t = A[i].cos, q.push(A[i]);
for (int i = 1; i <= n; i++)
{
c now = q.top();
q.pop();
ans[i] = now.t;
now.t += now.cos;
q.push(now);
}
while ( q.size() )
q.pop();
printf("%d ", ans[n]);
// ans[i]表示第i个物品完成的时间
for (int i = 1; i <= m2; i++)
scanf("%d", &B[i].cos), B[i].t = B[i].cos, q.push(B[i]);
for (int i = n; i >= 1; i--)//先处理后完成的,然后用一般的任务调度问题来解决
{
c now = q.top();
q.pop();
ans2 = max(ans2, now.t + ans[i]);//最晚的活动时间
now.t += now.cos;
q.push(now);
}
printf("%d", ans2);
return 0;
}
洛谷P2751 工序安排Job Processing的更多相关文章
- 洛谷P2751 [USACO4.2]工序安排Job Processing
P2751 [USACO4.2]工序安排Job Processing 18通过 78提交 题目提供者该用户不存在 标签 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 一家工 ...
- 洛谷 P2751 [USACO4.2]工序安排Job Processing 解题报告
P2751 [USACO4.2]工序安排Job Processing 题目描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式 ...
- 洛谷P2751[USACO]工序安排
题目传送门 怎么说呢,这个题目我刚开始随便乱搞了几下,交了个暴力代码上去居然还水了49分,数据确实有点弱啊,然后看到洛谷上那位大佬Redbag的题解瞬间就佩服的五体投地,那真的是简洁.易懂又高效.直接 ...
- [洛谷P2365] 任务安排
洛谷题目链接:任务安排 题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时 ...
- 洛谷P2365 任务安排(斜率优化dp)
传送门 思路: 最朴素的dp式子很好考虑:设\(dp(i,j)\)表示前\(i\)个任务,共\(j\)批的最小代价. 那么转移方程就有: \[ dp(i,j)=min\{dp(k,j-1)+(sumT ...
- 洛谷 P1160 队列安排 Label:链表 数据结构
题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...
- 洛谷P1386座位安排
座位安排 今天,在机房里做了这道题目,我来整理一下思路. 首先读懂题意,这n个人是不需要按1到n来一次安排的,也就是说你可以先安排任意一个人. 那么有一种很好排除的情况,那就是对于大于等于i的作为的需 ...
- 洛谷 P1160 队列安排
题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...
- 2018.07.09 洛谷P2365 任务安排(线性dp)
P2365 任务安排 题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间 ...
随机推荐
- 全栈项目|小书架|微信小程序-项目结构设计分包
前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...
- Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂
Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...
- 前后端API交互如何保证数据安全性
前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合.无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提 ...
- Webform中的前后端分离
Webform常用的开发方式 (1)运用服务器端控件的aspx页面 (2)一般处理程序+html静态页面+Ajax(所谓的前后端分离) (3)一般处理程序+html模板引擎 这里简单记录html+ ...
- 4.linux下配置Golang的环境变量
装好linux后优先在linux上配置Golang开发环境. 1.到Go语言中文网下载Linux安装包 https://studygolang.com/dl 2.到下载的目录下解压,下载的文件一般在“ ...
- dpkg文件缺失问题
sudo apt-get update 命中:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 命中:2 ht ...
- MySQL Error--存储inode用完后报设备没有空间
问题描述:磁盘有足够剩余空间,但在创建文件或文件夹时报错,提示“设备没有空间”. 问题原因:当存储设备通过分区格式化为文件系统后,会分为两部分:1.block部分: 存储的最小单位为扇区(Sector ...
- AspNetCore架构图
asp,net,core All-in-One App All-in-One applications N-Layer 典型的应用层 分层项目骨架 Clean Architecture Layers ...
- IDEA实用教程(十)—— 配置Maven的全局设置
使用之前需要提前安装好Maven 第一步 第二步
- 使用globalData函数设置全局变量
在app.js中设置需要的全局变量的参数,比如公司名称等 //app.js App({ globalData: { title: 'tomatocc' } }) 然后就可以在某个页面的js文件中(比如 ...