首页 > 其他分享 >2023.04.08 定时测试随笔

2023.04.08 定时测试随笔

时间:2023-04-08 12:34:17浏览次数:60  
标签:工序 机器 int 08 2023.04 maxx maxn 时间轴 随笔

T1 [NOIP2006 提高组] 作业调度方案 (模拟)

传送门:luogu P1131


约束条件 :

  • 对于同一个工件,第 \(i\) 道工序必须要在第 \(i-1\) 道工序结束之后才能开始
  • 一个机器每一刻只能加工一道工序
  • 必须要按照题目给的顺序安排下一个工序

关于安排顺序:

一个非常神器的东西 考试的时候因为这个卡了很久

对于安排序列 1 1 2 3 3 2, \(1\) 工件在 \(2\) 工件的前面,如果没有顺序安排,\(2\) 就可以在 \(1\) 前面
\(2\) 就可以从 \(0\) 开始,那这样的话结果就会不一样,安排顺序使调度固定,最短方案有且只有一种


题目已经给出了每个工作的工序顺序以及每一道工序在哪个机器上进行,我们要做的就是
合理安排机器的使用时间使满足上面的约束条件

我们可以把每个机器看成一条 时间轴 ,在这个时间轴上去安排每一道工序,又因为约束条件
所以我们的模拟思想就是在这个时间轴上 从左到右插空,如果有一段区间是空的就插入

对于每一次插入一段工序 \(i\),我们需要维护一些东西:

  • 第 \(i\) 道工序在哪个机器完成以及所需时间
  • 第 \(i-1\) 道工序完成的时间的最后一刻(保证 \(i\) 在 \(i-1\) 之后开始)
  • 在当前机器的时间轴上的某一刻是否已经有工序了(保证一个机器每一刻只加工一道)

#include <bits/stdc++.h>

using namespace std;

const int maxn = 20 + 5;
int wh[maxn][maxn], co[maxn][maxn], cnt[maxn], n, m, maxx;
int lst[maxn], mct[maxn][10005], a[maxn * maxn];//时间轴存10005

void read() {
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= n * m; ++ i)
		scanf("%d", &a[i]);
	for (int i = 1; i <= n; ++ i)
		for (int j = 1; j <= m; ++ j)
			scanf("%d", &wh[i][j]);
	for (int i = 1; i <= n; ++ i)
		for (int j = 1; j <= m; ++ j)
			scanf("%d", &co[i][j]);
	for (int i = 1; i <= n * m; ++ i) {
		cnt[a[i]] ++ ;
		int now = a[i], w = wh[a[i]][cnt[a[i]]], c = co[a[i]][cnt[a[i]]];
		int p = 0;
		for (int j = lst[now] + 1; ; ++ j) {
			if (!mct[w][j])
				++ p;
			else 
				p = 0;
			if (p == c) {
				for (int k = j - c + 1; k <= j; ++ k)
					mct[w][k] = 1;
				if (j > maxx) maxx = j;
				lst[now] = j;
				break ;
			}
		}
	}
	printf("%d\n", maxx);
}

int main() {
	read();
	return 0;
}

标签:工序,机器,int,08,2023.04,maxx,maxn,时间轴,随笔
From: https://www.cnblogs.com/xin-xi/p/17298317.html

相关文章

  • 程序设计应用2023-04-08
    visualstudiocode里面可以安装docker插件newdevcontainer  db_index=true普通索引unique=true唯一索引classMeta:  indexes=[]  unique_together pythonmanage.pymakemigrations 现根据类生成迁移脚本pythonmanage.pymigrate 打脚本 ......
  • 随笔记事
    1)mysql的delete语句一定要有from,没有会报错    deletefromsys_rolewhereID=@roleId  2)layui的默认按钮去掉的方法,必须使用赋值为空值的方式,直接备注掉,或者不赋值还是会有默认的三个按钮    ,defaultToolbar:[]3)c#直接用htmlTable的方式转Excel......
  • 多媒体技术2023-04-08
    实验六 老照片的修复,使用Photoshop污点修复画笔工具,画笔大小,硬度(边缘柔化) 修复画笔工具,用来处理划痕。先取原样本,然后alt看效果。  实验七  花朵的仿制和变色仿制图章工具,取完样本,再来绘画。按住alt取原,然后绘制。图案图章工具,取图案的一部分,画笔里面有一个颜......
  • 2023年4月8日08:44:15
    有问题,有问题,这个思想汇报要得时间有点久,我必须得快点了,总不能再拖下去了。解决方案:以后写思想汇报还是一个季度一篇,不要再来一起补了,太费时间了。昨天起的比较晚,今天算是缓过来了,作息开始规律 起来了。Spring框架,算法,老师的实验作业,要学的东西还是很多,压力蛮大的。路漫漫其......
  • 2023.04.07 - 前端常用解决跨域问题的方案
    JSONP:JSONP(JSONwithPadding)是一种前端跨域请求的方式,它利用了HTML中的<script>标签没有跨域限制的特点,通过动态创建<script>标签,构造一个特殊的URL,让服务端返回一段指定的JavaScript代码,然后在本地执行这段代码以达到跨域请求数据的目的。JSONP具有兼容性好、简单易......
  • 作业随笔-数据在内存中的存储
    大小端存储不同类型的整型提升int类型和folat类型在内存中的存储方式#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//intmain()//判断是大端存储方式还是小段存储方式//{// //大端存储模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中// //......
  • day23| 669+108+538
    669.修剪二叉树题目简述给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值在[low,high]中。修剪树不应该 改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。可以证明,存在 唯一的答......
  • 2023.04.07 - 用jQuery发起JSONP请求时jsonpCallback和success的回调区别在哪?
    在使用jQuery发起跨域请求时,可以通过指定dataType为jsonp来实现JSONP跨域请求。此时,jQuery会自动生成一个回调函数,并将其作为参数发送给服务器。服务器需要将返回数据包装在回调函数中,以便于客户端解析。以下是一个简单的jQuery实现JSONP跨域请求的示例:$.ajax({......
  • 8086指令系统
     《8086寻址方式》寻址主要可以分为3类:数据寻址程序转移地址寻址(即查找下一条指令的地址)端口寻址解释一下端口:  端口也要编址,其编址方式有两种:1.集中编址   ......
  • 4月7日leetcode随笔,异或的灵活运用
    给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/single-number著作权归领扣......