#二分图匹配#UVA1194 Machine Schedule
题目
有两台机器 \(A,B\) 分别有 \(n,m\) 种模式。
现在有 \(k\) 个任务。对于每个任务 \(i\) ,给定两个整数 \(a_i\) 和 \(b_i\),
表示如果该任务在 \(A\) 上执行,需要设置模式为 \(a_i\);
如果该任务在 \(B\) 上执行,需要设置模式为 \(b_i\)。
每台机器第一次开机默认处在0模式,且第一次开机不需要消耗时间。
任务可以以任意顺序被执行,但每台机器转换一次模式就要重启一次。
求怎样分配任务并合理安排顺序,能使机器重启次数最少。
\(1≤n,m≤100,1 \leq k \leq 1000,0 \leq a_i<n,0\leq b_i<m\)
分析
首先先把模式为0的任务去掉,然后考虑两种模式必选其一,
以下摘自《算法竞赛进阶指南》
- 0要素:节点能分成独立的两个集合,每个集合内部有0条边
- 1要素:每个节点只能与1条匹配边相连
- 2要素:每条边有两个端点,二者至少选择一个(最小点覆盖)
所以观察到这个模型为二分图最小点覆盖,直接求最大匹配即可
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=201;
struct node{int y,next;}e[N*5];
int v[N],link[N],n,m,et,ans,upd,as[N];
inline signed iut(){
rr int ans=0,f=1; rr char c=getchar();
while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans*f;
}
inline void add(int x,int y){
e[++et]=(node){y,as[x]},as[x]=et;
}
inline bool match(int x){
for (rr int i=as[x];i;i=e[i].next)
if (v[e[i].y]!=upd){
v[e[i].y]=upd;
rr int q=link[e[i].y];
link[e[i].y]=x;
if (!q||match(q)) return 1;
link[e[i].y]=q;
}
return 0;
}
signed main(){
while (n=iut()){
m=iut(),et=ans=0;
for (rr int Q=iut(),x,y;Q;--Q){
iut(),x=iut(),y=iut();
if (!x||!y) continue;
add(x,y+n);
}
for (rr int i=1;i<=n;++i) ++upd,ans+=match(i);
printf("%d\n",ans);
for (rr int i=1;i<=n+m;++i) as[i]=link[i]=0;
}
return 0;
}
#二分图匹配#UVA1194 Machine Schedule的更多相关文章
- UVA1194 Machine Schedule
题目地址:UVA1194 Machine Schedule 二分图最小覆盖模型的要素 每条边有两个端点,二者至少选择一个.简称 \(2\) 要素. \(2\) 要素在本题中的体现 每个任务要么在 \( ...
- UVA1194 Machine Schedule[二分图最小点覆盖]
题意翻译 有两台机器 A,B 分别有 n,m 种模式. 现在有 k 个任务.对于每个任务 i ,给定两个整数$ a_i\(和\) b_i$,表示如果该任务在 A上执行,需要设置模式为 \(a_i\): ...
- POJ1325 Machine Schedule 【二分图最小顶点覆盖】
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11958 Accepted: 5094 ...
- ZOJ 1364 Machine Schedule(二分图最大匹配)
题意 机器调度问题 有两个机器A,B A有n种工作模式0...n-1 B有m种工作模式0...m-1 然后又k个任务要做 每一个任务能够用A机器的模式i或b机器的模式j来完毕 机器開始都处于模式0 每 ...
- 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule
二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...
- poj 1325 Machine Schedule 二分匹配,可以用最大流来做
题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数. ======= ...
- hdu 1150 Machine Schedule (二分匹配)
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1150 Machine Schedule(二分匹配,简单匈牙利算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 Machine Schedule Time Limit: 2000/1000 MS (Java/ ...
- 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)
二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...
- POJ 2724 Purifying Machine (二分图匹配)
题意 给定m个长度为n的01串(*既表示0 or 1.如*01表示001和101).现在要把这些串都删除掉,删除的方法是:①一次删除任意指定的一个:②如果有两个串仅有一个字符不同,则可以同时删除这两个 ...
随机推荐
- 【Android 抓包对抗】代理检查绕过
1. 安装apk,点进去发现一点就挂 2. apk 拖入到jadx中观察,发现多出检查,一旦满足条件就会退出 .... if (((ConnectivityManager) getSystemServ ...
- mysql进阶语句优化---day40
# ###part1: sql语句优化 #(1) mysql 执行流程 客户端: 发送连接请求,然后发送增删改查sql语句进行执行 服务端: 1.连接层:提供和客户端连接的服务,在tcp协议下 提供多 ...
- 都说了别用BeanUtils.copyProperties,这不翻车了吧
分享是最有效的学习方式. 博客:https://blog.ktdaddy.com/ 故事 新年新气象,小猫也是踏上了新年新征程,自从小猫按照老猫给的建议[系统梳理大法]完完整整地梳理完毕系统之后,小猫 ...
- 【Azure Developer】Github Action使用Azure/login@v1插件登录遇见错误的替代方案
问题描述 在使用 Github Action - Azure/login@v1 的插件时候,登录中国区Azure遇见了问题. Login YAML 内容: - name: 'Login via A ...
- Android Handler实现子线程与子线程、主线程之间通信
一.子线程向主线程传值: 首选在主线程里创建一个Handler 1 Handler mHandler = new Handler(){ 2 @Override 3 public void handle ...
- 牛客周赛34(A~E)
A 两种情况 两个字符相同只有2 两个字符不相同4 #include <bits/stdc++.h> #define int long long #define rep(i,a,b) fo ...
- 安装Typora+PicGo七牛云图床问题解决
遇到两个问题 第一个安装PicGo软件打不开只在后台运行,卸载.重启都试过没用,按照默认安装路径到c盘才能打开软件. 第二个问题"设定存储区域"输入z0不行,需要输入cn-east ...
- Zabbix6.0使用教程 (五)—zabbix从二进制包安装上篇
大家好,我是乐乐.上一期我们已经讲过从源代码安装zabbix,本期着重讲从二进制包安装zabbix. 当我们在ZABBIX官方存储库可以看到,Zabbix SIA 提供如下官方RPM和DEB包: ·R ...
- Git 系列:简介安装以及配置管理
目录 简介安装 简介 Centos安装 配置管理 git help 概要 选项 示例 git-doc git config 概要 选项 变量 示例 初始化配置 简介安装 简介 https://git- ...
- Kettle实战视频教程
kettle实战视频教程 欢迎关注笔者的公众号: java大师, 每日推送java.kettle运维等领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!!个人网站: http://w ...