https://www.luogu.org/problemnew/show/P2751

题解:贪心

从前往后贪心,用f[i]记录第i个零件完成的最小时间

定义一个结构体,记录

v:每一台机器完成一个零件的时间和

s:完成下一个零件到达的时间点(会不断变化)

从前往后每次找完都要排序

最后输出f[n]

f数组肯定是f[i]<=f[i+1],为了让最长时间尽量少,我们就尽量

让A,B连个步骤的总时间平均,,所以要 从后往前 找 查找的方

式和前面的几乎一样,但要记得+f[i]

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
#define endl "\n"
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=1000+10;
const int M=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int s,t,n,m,k,p,l,r,u,v,w,a,b;
int ans,cnt,flag,temp,sum;
struct node{int s,v;//小根堆,在栈里面自动排序,非常有用,值得记一下 bool operator<(node k)const{if(s>k.s) return true;//这里把完成时间从小到大排一次序 return false;}
}x;
priority_queue<node> q;//栈,想学贪心必先学栈
int f[N];//记录第i个零件完成的最小时间
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//int T=0;scanf("%d%d%d",&n,&a,&b);for(int i=1;i<=a;i++){scanf("%d",&x.v); x.s=x.v;//这里本来可以为0,但是为了让排序方便很多//而且这样可以避免很多不必要的情况发生  //比如说某一台机器运转时间比另一台高出了很多 q.push(x);//放进栈 }for(int i=1;i<=n;i++){//从前往后 x=q.top();//取出最小值 q.pop();f[i]=x.s;//记录 x.s=x.s+x.v;//为下一个做准备   q.push(x);//继续放进栈里面排序 }while(!q.empty()) q.pop();//找完了A,再来找B,所以得把q全部弹出去 for(int i=1;i<=b;i++){scanf("%d",&x.v);//和上面几乎一样的操作 x.s=x.v;q.push(x);}int t=0;//t记录用时最长的那个 for(int i=n;i>=1;i--){//从后往前 x=q.top();q.pop();t=max(t,x.s+f[i]);//记得+f[i],x不用自己加f[i] x.s=x.s+x.v;q.push(x);}printf("%d %d\n",f[n],t);//输出 #ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif//cout << "Hello world!" << endl;return 0;
}

[USACO4.2]工序安排Job Processing相关推荐

  1. 洛谷P2751 [USACO4.2]工序安排Job Processing

    P2751 [USACO4.2]工序安排Job Processing 18通过 78提交 题目提供者该用户不存在 标签 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 一家工 ...

  2. Luogu P2751 [USACO4.2]工序安排Job Processing

    题目描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式工作的流水线的组织形式.A型机器从输入库接受工件,对其施加操作A,得到 ...

  3. Job Processing 工序安排

    描述 一家工厂的流水线正在生产一种产品,这需要两种操作:操作A和操作B.每个操作只有一些机器能够完成. 上图显示了按照下述方式工作的流水线的组织形式.A型机器从输入库接受工件,对其施加操作A,得到的中 ...

  4. USACO Section 4

    前言 好久没更新这个系列了,最近闲的无聊写一下.有两题搜索懒得写了. P2737 [USACO4.1]麦香牛块Beef McNuggets https://www.luogu.com.cn/probl ...

  5. 入门数据分析,需要会什么

    作者:木兮月宝   来源:木木自由 我们不要局限于入门专职数据分析的岗位,而是从广义"数据分析"的角度,来理解一下如何入门数据分析.不存在质疑自己合不合适做数据分析.纠结零基础入门 ...

  6. 曲柄加工工艺及夹具设计(铣A面)【说明书+CAD图纸+SW三维图+工序卡+过程卡】

    摘  要 本设计是基于曲柄零件的加工工艺规程及一些工序的专用夹具设计.曲柄零件的主要加工表面是平面及孔系.一般来说,保证平面的加工精度要比保证孔系的加工精度容易.因此,本设计遵循先面后孔的原则.并将孔 ...

  7. 机械制造工艺学课程设计——发动机连杆加工(说明书+CATIA三维模型+CAD图纸+工序卡+过程卡)

    目录 引言 1. 零件的分析 1.1. 零件的结构和功用分析 1.2. 零件的工艺分析 1.2.1. 连杆的加工要求: 1.2.2. 加工时的工艺分析与技术要求 2. 机械加工工艺规程制定 2.1. ...

  8. G41J—6型阀体双面钻24孔专用机床上的夹具设计(说明书 CAD图纸 开题报告 液压原理图 工序图 机床生产率计算卡)

    摘要 本次设计的主要任务是G41J-6型阀体双面钻24孔专用机床上的专用夹具设计,附加机床的总体设计,即"三图一卡"设计:被加工零件工序图.加工示意图.机床尺寸联系图和生产率计算卡 ...

  9. Oracle EBS 名词解释

    A ABC classification ( ABC 分类法) 一种按重要性(如年度金额或公司的事务处理历史记录)递减顺序对物料进行分类的方法. absorption account (吸收帐户) 记 ...

最新文章

  1. jquery 读秒,倒数计时方案
  2. Fedora 30可能默认启用DNF的best模式
  3. CTFshow 文件包含 web116
  4. mysql自动写入创建时间_mysql 自动记录数据插入及最后修改时间
  5. openwrt 19 overlay 空间不足_重视 | 山西一矿井瓦斯爆炸,有限空间作业切记注意安全...
  6. 几位无人驾驶领域的杰出科学家
  7. 智能硬件(2)---手机访问智能硬件的三种模式
  8. 图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现
  9. leetcode944. Delete Columns to Make Sorted
  10. 基于mykernel的时间片轮转调度
  11. 在WINCE中的一些VB.NET2005通用方法
  12. win10亮度怎么调_装好原版win10后,没有这样设置过,你的系统怎么可能好用!...
  13. 什么是PXE及PXE启动
  14. 金庸年度最新十大广告
  15. 更新win7原版镜像中添加usb3.0驱动
  16. 个人对GDT、GDTR、LDT、LDTR的理解
  17. 通达信股票接口委托成功原理是什么?
  18. Linux系统命令与网络、磁盘参数和日志监控
  19. 【Pytorch项目实战】之迁移学习:特征提取、微调、特征提取+微调、雾霾清除
  20. day 4 复习循环练习题和列表

热门文章

  1. java宝典_JAVA宝典之_JAVA基础
  2. isight参数优化理论与实例详解_详解oracle数据库优化参数--cursor_sharing
  3. java农耕者_蒯通——大才也,《史记》却为何没有他的列传
  4. python多进程编程 多个函数并发执行_python并发编程之多进程编程
  5. java动态语言_java动态类型语言支持(三)
  6. python装饰器常见问题_关于python装饰器的问题
  7. 浙江万里学院计算机专业宿舍,浙江万里学院宿舍条件,宿舍几人间环境好不好(图片)...
  8. 鸿蒙系统真实评测,鸿蒙系统和安卓的区别-华为鸿蒙系统使用体验评测
  9. 【小白学习Keras教程】四、Keras基于数字数据集建立基础的CNN模型
  10. 四、爬虫中的urllib库使用