[HDU]1150 Machine Schedule 二分图 + 最小点覆盖

【hdu1150】【Machine Schedule】二分图最小点覆盖+简单感性证明 (上不了p站我要死了,侵权度娘背锅) 题目大意 有两台机器A和B以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式ai,如果它在机器B上运行,则机器B需要设置为模式bi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少 阅读详情

Machine Schedule

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8656    Accepted Submission(s): 4347


Problem Description
As we all know, machine scheduling is a very classical problem in computer science and has been studied for a very long history. Scheduling problems differ widely in the nature of the constraints that must be satisfied and the type of schedule desired. Here we consider a 2-machine scheduling problem.

There are two machines A and B. Machine A has n kinds of working modes, which is called mode_0, mode_1, …, mode_n-1, likewise machine B has m kinds of working modes, mode_0, mode_1, … , mode_m-1. At the beginning they are both work at mode_0.

For k jobs given, each of them can be processed in either one of the two machines in particular mode. For example, job 0 can either be processed in machine A at mode_3 or in machine B at mode_4, job 1 can either be processed in machine A at mode_2 or in machine B at mode_4, and so on. Thus, for job i, the constraint can be represent as a triple (i, x, y), which means it can be processed either in machine A at mode_x, or in machine B at mode_y.

Obviously, to accomplish all the jobs, we need to change the machine's working mode from time to time, but unfortunately, the machine's working mode can only be changed by restarting it manually. By changing the sequence of the jobs and assigning each job to a suitable machine, please write a program to minimize the times of restarting machines. 
 

Input
The input file for this program consists of several configurations. The first line of one configuration contains three positive integers: n, m (n, m < 100) and k (k < 1000). The following k lines give the constrains of the k jobs, each line is a triple: i, x, y.

The input will be terminated by a line containing a single zero.
 

Output
The output should be one integer per line, which means the minimal times of restarting machine.
 

Sample Input
  
5 5 10 0 1 1 1 1 2 2 1 3 3 1 4 4 2 1 5 2 2 6 2 3 7 2 4 8 3 3 9 4 3 0
 

Sample Output
  
3
 

Source
    建二分图, 将a的模式放在左边, b的模式放在右边.
    如果一个任务能被a的x完成和b的y完成, 就把x向y建边.
    那么现在每条边就是一个任务, 要完成所有任务可以理解为覆盖所有边, 因为切换一个模式就重启一次, 所以就要选少的点(即模式). 那么相当于就是要求用最少的点覆盖完所有的边. 那么这就是最小点覆盖. 最小点覆盖 == 最大匹配. 二分图建起来跑匈牙利即可.
    本来模式是0, 所以一开始模式用0就能完成的任务就不用管. 这点细节要注意.
#include<stdio.h>
#include<bitset>
#include<cstring>
#define clear(a) memset(a, 0, sizeof(a))
using namespace std;
const int maxn = 2005;
bitset<maxn> vis;
int h[maxn], match[maxn], num, ans, n, m, k;
struct edge{ int nxt, v;}e[maxn * maxn];
inline void add(int u, int v){
	e[++num].v = v, e[num].nxt = h[u], h[u] = num;
}
bool find(int u){
	for(int i  = h[u]; i; i = e[i].nxt){
		int v = e[i].v;
		if(!vis[v]){
			vis[v] = 1;
			if(!match[v] || find(match[v]))
				return match[v] = u;
		}
	}
	return false;
}
int main(){
	while(~scanf("%d", &n), n){
		num = ans = 0;
		clear(h), clear(match);
		scanf("%d%d", &m, &k);
		for(int i = 1; i <= k; ++i){
			int a, b, c;
			scanf("%d%d%d", &a, &b, &c);
			if(b == 0 || c == 0) continue;
			add(b, c + n);
		}
		for(int i = 1; i <= n; ++i){
			if(find(i)) ++ans;
			vis = 0;
		}
		printf("%d\n", ans);
	}
}


从电商平台到微信私域:构建合规跳转链路的技术实现 在互联网营销与用户增长领域,链接跳转是连接不同平台、引导用户流量的基础技术。其核心原理是通过服务器端路由与参数解析,实现用户请求的接收、处理与重定向。这项技术的价值在于能够突破平台间的生态壁垒,实现流量的合规、可控迁移,尤其适用于跨平台营销、私域沉淀等场景。在实际应用中,常需处理微信环境限制、参数传递与动态内容生成等挑战。本文聚焦于电商平台(如淘宝)到微信生态的跳转需求,详细阐述了如何利用Node.js、Express框架及二维码生成技术,构建一个包含环境检测、参数传递与动态落地页的完整跳转系统,以解决微信 阅读详情

相关推荐

国产麒麟系统下用Rider开发C#桌面应用:从环境配置到Avalonia UI实战

本文详细介绍了在国产麒麟系统上使用JetBrains Rider开发C#桌面应用的完整流程,重点讲解了Avalonia UI框架的实战应用。从环境配置、Rider安装到Avalonia项目创建和UI开发技巧,全面覆盖了在非Windows环境下进行C#开发的关键步骤和优化建议,助力开发者高效构建跨平台桌面应用。

weixin_27791839的博客 387

HDU - 1150 Machine Schedule 最小点覆盖(最大二分图匹配-匈牙利算法)邻接表写法

日! 最近 CF 做的多了,再做多组输入的题的时候 忘记数组清空,,然后wa了 好久。。。 我就说吗。。。这么裸的匈牙利怎么会出错呢? ——————————————————————分割 这个题是最小点覆盖问题,画出图来以后可以知道是找最少的点覆盖所有边,每个点覆盖它相连的边 最小点覆盖问题   等价于   最大二分图匹配 相关证明这里不做详解 ,可以参考这个博客:http://ww

床前明月光 403

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2157

【二分图】poj 1325 Machine Schedule

二分图建图很重要啊,,

Gzbgreat的博客 385

利用绝对式编码器实现电机无限旋转的配置与优化

本文详细解析了如何利用绝对式编码器实现电机的无限旋转功能。通过切换驱动器编码器工作模式、精确计算逻辑位置范围等关键配置步骤,解决了传统方案在多圈计数溢出时的定位难题。该方案无需硬件改造,适用于大型回转台、连续供料系统等需要大范围连续绝对定位的自动化场景。

weixin_29184371的博客 239

UE5高斯泼溅落地全链路:从PLY导入到实时渲染的工程实践

3D高斯泼溅(3D Gaussian Splatting)正从NeRF后处理技术演进为新一代隐式几何渲染范式,其核心在于以可微椭球体替代传统三角面片,通过协方差矩阵与球谐系数实现高质量体素化渲染。该技术突破点云精度瓶颈,但与UE5现有资产管线存在根本性不兼容——静态网格导入器无法解析scale/rot/sh系数等非标顶点语义,标准光栅化管线亦无法执行高斯核采样计算。XV3DGS-UEPlugin通过自定义资产类型、StructuredBuffer GPU数据流与专用材质节点,将高斯泼溅重构为可编辑、可LOD

weixin_33692177的博客 357

Sigmoid函数原理、应用与优化技巧详解

激活函数是神经网络的核心组件,负责引入非线性特性。Sigmoid作为经典的激活函数,通过S形曲线将输入映射到(0,1)区间,具有良好的数学特性。其导数可用自身表示,便于反向传播计算,但也存在梯度消失问题。在工程实践中,Sigmoid常用于二分类输出层和门控机制,配合交叉熵损失函数使用。针对计算效率和数值稳定性问题,可采用温度参数调节和稳健实现等优化技巧。理解Sigmoid的数学本质与局限性,有助于在深度学习模型中选择合适的激活函数方案。

weixin_30243533的博客 388

高通camx进程ExtensionModule::TeardownOverrideSession类型crash问题分析之一:【死锁导致】

摘要:本文分析了一个在相机老化测试中出现的pthread_cond_wait持锁超时导致的ExtensionModule::TeardownOverrideSession崩溃问题。通过crash堆栈和日志分析,发现close阶段存在近1分钟的无响应期。进一步分析trace文件发现存在多线程死锁:ChiFeature2Graph::GenerateSmartErrorCode和ChiFeature2RequestObject::SetCurRequestState两个线程分别持有不同锁并互相等待对方释放。最终

1110

机器任务

有两台机器 A,B 以及 K 个任务。 机器 A 有 N 种不同的模式(模式0~N-1),机器 B 有 M 种不同的模式(模式0~M-1)。 两台机器最开始都处于模式0。 每个任务既可以在A上执行,也可以在B上执行。 对于每个任务 i,给定两个整数 a[i] 和 b[i],表示如果该任务在 A 上执行,需要设置模式为 a[i],如果在 B 上执行,需要模式为 b[i]。 任务可以以任意顺序被执行,...

青烟绕指柔的博客 433

yolov5直接调用zed相机实现三维测距(python)

zed代码比较简洁,但是一定要把环境配置好,后续自己会把他当做普通双目标定,去对比分析效果,并完善相关功能。

积极向上的mr.d的博客 1万+

Transformer-LSTM预测 | 基于Transformer-LSTM的多变量单步时间序列预测(Matlab)

Transformer-LSTM预测 | 基于Transformer-LSTM的多变量单步时间序列预测(Matlab)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 189

hdu 1150 Machine Schedule(最小顶点覆盖)

Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4288    Accepted Submission(s): 2088 Problem Description As we all

WEYuLi的专栏 912

虚拟网络的“隐形盾”:C#如何用代码把DDoS踢出门?

本文分享了如何用C#防御DDoS攻击的实战经验。通过三种核心防御策略:1)基于IP的速率限制中间件,使用滑动时间窗口算法控制请求流量;2)自动IP封禁服务,通过特征检测识别恶意IP并加入黑名单;3)优化数据库连接池和HTTP客户端连接池,合理配置资源参数。文中提供了详细的C#代码实现,包括限流中间件、IP封禁服务和连接池优化方案,并分享了生产环境中的调优经验,如配合Redis实现分布式限流、使用fail2ban自动封禁等技巧,帮助开发者构建更健壮的防御体系。

墨夶的博客 329

Hdu1150 Machine Schedule【二分图最大匹配、最小点覆盖】

个人练习记录

m0_73500785的博客 339

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

hdu 1150 Machine Schedule(二分图求最小点覆盖)

题意:有两台

zizaimengzhongyue的专栏 695

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

hdu 1150Machine Schedule(二分图最小点覆盖)

机器时间表 时间限制:2000/1000 MS(Java /其他)内存限制:65536/32768 K(Java /其他) 提交总数:11823接受提交:5874 问题描述 众所周知,机器调度是计算机科学中的一个非常经典的问题,并且已经有很长的历史了。调度问题在必须满足的约束的性质和所需的调度类型方面差异很大。在这...

一身清贫怎敢入繁华 454

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Machine Schedule HDU 1150 二分图最大匹配(最小点覆盖)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路: 题目大概意思:有n个任务,需要在电脑的不同模式下进行,可以在A组电脑的i模式下进行或者在B组的j模式下进行,刚开始电脑处于0模式,所以对于其他模式需要重启电脑,其次对于0模式下的任务,我们就无需去判断 所以我们可以用二分图匹配,将A组模式看成一个集合,将B组模式看成一个集合,用A集合...

HKer_YM的博客 258

HDU - 1150 Machine Schedule(最小点覆盖-二分图最大匹配)

题目链接:点击查看 题目大意:现在有一个机器A和一个机器B,A机器有n种模式,B机器有m种模式,现在有k次工作需要完成,每次工作的信息为: id x y:编号为id,在A机器要用x模式完成,在B机器要用y模式完成,每次切换模式需要记录操作次数,问怎样调换工作顺序,可以让操作次数最少 题目分析:很明显的二分图匹配问题了,不过需要分析一下,挺好的一道题目,首先机器A和机器B可以分为两个互相独立的...

Falcon的博客 468

HDU 1150 Machine Schedule (二分图最小点覆盖)

Machine Schedule HDU - 1150在一个工厂,有两台机器A, B生产产品。A机器有n种工作模式(模式0,模式1….模式n-1)。 B机器有m种工作模式(模式0,模式1….模式m-1)。现在要加工k个产品。每个产品可以由两台机器特定的模式生产。例如:产品0,可以由A机器在3号模式或B机器4号模式生产。 两台机器初始模式都在模式0,但是,这两台机器不是很先进,如果需要切换模式,只

w4149 374

HDU1150 Machine Schedule【二分图 最小点覆盖】

Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10961    Accepted Submission(s): 5424   Problem Description As we all know,...

逐梦者 270

HDU-1150-Machine Schedule【最小点覆盖】【二分图匹配】

题目大意:有两台机器加工零件,A有n种工作模式(a0,a1,a2,a3...an),B有m种工作模式(b0,b1,b2...bm)。现在需要加工k个零件,每个零件输入(i,x,y)表示第i这个零件在A机器上需要用x模式,在B机器上需要y模式完成。零件加工顺序任意,每次改变机器模式需要花费1点值。问最小花费为多少,即最少改变几次模式? 注意,两台机器初始状态都在0状态

Linoy 1483

Machine Schedule hdu 1150 二分图的最小点覆盖

Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4982    Accepted Submission(s): 2465 Problem Description As we all

风华绝代 765

HDU 1150 Machine Schedule (二分图最小点覆盖)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 有两个机器a和b,分别有n个模式和m个模式。下面有k个任务,每个任务需要a的一个模式或者b的一个模式完成。 两个机器初始都是0模式,一个机器转换一个模式需要重启一次。问你最少需要重启几次能完成所有的任务。 不太明显的二分匹配,将每个任务的两个模式连线,大概就能看出来这是个最小点覆盖问题。 ...

weixin_30588907的博客 132

HDU - 1150 : Machine Schedule(二分图、最小点覆盖)

题目链接:HDU - 1150 : Machine Schedule 题目大意:有A和B两台机器,A有n种工作模式,B有m种工作模式,现在有k个任务,每个任务可以被A的第x种模式执行,也可以被B的第y种模式执行,机器的初始工作状态在0模式,但是机器每换一种工作模式就需要重启一次,现在请你合理为机器安排任务,使得重启次数最少

Jerry的博客 392

HDU 1150 Machine Schedule (二分图的最小点覆盖)

题目链接:点击打开链接题意:有A,B两台机器和k给任务,机器A有n中模式,机器B有m种模式,初始均在模式0,每个任务都可以由机器A的一种模式或者机器B的一种模式执行。每次切换模式都需要代价1,要求求最小的代价执行完所有的任务。题解:最小点覆盖 = 最大匹配数。感性理解过程:假设二分图分为(X,Y;E)那么针对于任意点,都有如下两种情况(1)点 i 同时连接着未匹配的点 和 匹配点(2)点 i 连接...

PK__PK的博客 274

HDU1150/POJ1325_Machine Schedule(二分图/最小点覆盖=最大匹配)

解题报告 题目传送门 题意: A机器有n个模式,B机器有m个模式,每个作业可以在任何机器的特定模式下工作,转换模式需要耗时,求最小耗时 思路: 把AB两机器的模式当成二分图顶点,模式之间的连线就是某个作业可以在该两个模式下工作,就转换成求最小点覆盖,用最少的点覆盖最多的边。 最小点覆盖=最大匹配 #include #include #include #include #inc

_nplus 1564
上一篇: [BZOJ]4443 [SCOI2015] 小凸玩矩阵 二分答案 + 二分图最大匹配
下一篇: [BZOJ]4950 二分图 + 最大匹配
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值