【题解】洛谷P1065 [NOIP2006TG] 作业调度方案(模拟+阅读理解)
次元传送门:洛谷P1065
思路
简单讲一下用到的数组含义
work 第i个工件已经做了几道工序
num 第i个工序的安排顺序
finnish 第i个工件每道工序的结束时间
need 第i个工件第j道工序需要的机器
tim 第i个工件第j道工序需要的时间
mac 第i个机器的状态
我们遍历时间线找出可以安排下去的工序就安排下去即可 (因为输入已经满足最优)
代码
#include<iostream>
using namespace std;
#define maxn 25
int work[maxn],num[maxn*maxn],finish[maxn];
int tim[maxn][maxn],need[maxn][maxn],mac[maxn][maxn*maxn];
int n,m,cnt,ans;
int main()
{
cin>>m>>n;
for(int i=;i<=n*m;i++) cin>>num[i];//输入工序顺序
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) cin>>need[i][j];
for(int i=;i<=n;i++)
for(int j=;j<=m;j++) cin>>tim[i][j];
for(int i=;i<=n*m;i++)
{
work[num[i]]++;//此工件工序++
for(int j=finish[num[i]]+;;j++)//遍历时间线
{
if(!mac[need[num[i]][work[num[i]]]][j]) cnt++;//如果此时需要的机器闲着
else cnt=;
if(cnt==tim[num[i]][work[num[i]]])//如果满足时间可以插入
{
for(int k=j-cnt+;k<=j;k++) mac[need[num[i]][work[num[i]]]][k]=;//插入
cnt=;//清除
finish[num[i]]=j;//结束时间后推
break;
}
}
}
for(int i=;i<=n;i++)
ans=max(ans,finish[i]);//最后时间为所有工件中最后完成的
cout<<ans;
}
【题解】洛谷P1065 [NOIP2006TG] 作业调度方案(模拟+阅读理解)的更多相关文章
- 题解 洛谷 P3734 【[HAOI2017]方案数】
可以先考虑没有障碍物的情况,设计状态\(f_{i,j,k}\),表示到达坐标 \((x,y,z)\)二进制下,\(x\)有\(i\)位,\(y\)有\(j\)位,\(z\)有\(k\)位的方案数. 得 ...
- 洛谷P2756飞行员配对方案问题 P2055假期的宿舍【二分图匹配】题解+代码
洛谷 P2756飞行员配对方案问题 P2055假期的宿舍[二分图匹配] 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架 ...
- 洛谷 P5594 【XR-4】模拟赛
洛谷 P5594 [XR-4]模拟赛 洛谷传送门 题目描述 X 校正在进行 CSP 前的校内集训. 一共有 nn 名 OIer 参与这次集训,教练为他们精心准备了 mm 套模拟赛题. 然而,每名 OI ...
- 题解 洛谷 P2010 【回文日期】
By:Soroak 洛谷博客 知识点:模拟+暴力枚举 思路:题目中有提到闰年然后很多人就认为,闰年是需要判断的其实,含有2月29号的回文串,前四位是一个闰年那么我们就可以直接进行暴力枚举 一些小细节: ...
- 洛谷 P1065 作业调度方案
P1065 作业调度方案 题目描述 我们现在要利用 mm 台机器加工 nn 个工件,每个工件都有 mm 道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每 ...
- 洛谷P1065 作业调度方案
P1065 作业调度方案 题目描述 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作 ...
- 【题解】洛谷P3952 [NOIP2017TG] 时间复杂度(模拟)
题目来源:洛谷P3952 思路 纯模拟没啥可说的了 果然好复杂 参考了你谷一个40行代码 代码 #include<iostream> #include<cstdio> #inc ...
- 【题解】洛谷P1066 [NOIP2006TG] 2^k进制数(复杂高精+组合推导)
洛谷P1066:https://www.luogu.org/problemnew/show/P1066 思路 挺难的一道题 也很复杂 满足题目要求的种数是两类组合数之和 r的最多位数m为 w/k(当w ...
- 题解-洛谷P4229 某位歌姬的故事
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...
随机推荐
- Java类加载器ClassLoader总结
JAVA类装载方式,有两种: 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中. 2.显式装载, 通过class.forname()等方法,显 ...
- 键盘录入(Java)
键盘录入(Java): 1.导包 格式 import java.util.Scanner; 位置 在class上面 2.创建键盘录入对象 格式 Scanner sc = new Scanner(Sys ...
- Effective C++ .33 子类的名称覆盖
#include <iostream> #include <cstdlib> using namespace std; class Base { public: int add ...
- [翻译]Review——How to do Speech Recognition with Deep Learning
原文地址:https://medium.com/@ageitgey/machine-learning-is-fun-part-6-how-to-do-speech-recognition-with-d ...
- 【转】JSON.parse()与JSON.stringify()的区别
JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"name":"goatling"}' //解析 ...
- VC 在调用main函数之前的操作
title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 ...
- Java中的深拷贝和浅拷贝(转载)
深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤其在C++语言中,若不弄懂,则会在delete的时候出问题,但是我们在这幸好用的是Java.虽然java自动管理对象的回收,但对于深拷贝(深复 ...
- 通过JTS源码分析Rtree(未完待续)
前言 R树在数据库等领域做出的功绩是非常显著的.它很好的解决了在高维空间搜索等问题.它把B树的思想很好的扩展到了多维空间,采用了B树分割空间的思想,并在添加.删除操作时采用合并.分解结点的方法,保证树 ...
- Android 友盟统计的集成与使用(包含多渠道打包配置)
前言 app上线后,一般公司都希望跟踪app在市场上的使用情况.包括新增用户.活跃用户.渠道信息.错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品.这些都可以通过集成友盟 ...
- 【Python】raw转义字符
r"hi" 这里字符串前面加了r,是raw的意思,它表示对字符串不进行转义.为什么要加这个?你可以试试print "\bhi"和r"\bhi" ...