#二分图匹配#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).现在要把这些串都删除掉,删除的方法是:①一次删除任意指定的一个:②如果有两个串仅有一个字符不同,则可以同时删除这两个 ...
随机推荐
- h5页面在微信打开,ios底部存在返回横条的问题
我的问题比较简单,一个处理链接的页面,二次跳转进入真正的页面,导致ios出现返回横条,点击后退回到了处理链接页面.因为这个后退不会重新加载,导致一直处在处理链接的这个空页面. 所以我用replace代 ...
- Hi3516开发笔记(七):Hi3516虚拟机交叉开发环境搭建之交叉编译Qt
海思开发专栏 上一篇:<Hi3516开发笔记(六):通过HiTools使用USB/串口将uboot.kernel.rootfs和userdata按照分区表烧写镜像>下一篇:<Hi35 ...
- itertools.chain.from_iterable()将嵌套列表合并成一个
from itertools import chain a = [[1,2],[3,4]] print(chain.from_iterable(a)) # [1,2,3,4]
- JVM-对象实例化
JVM-对象实例化 1.创建对象的方式 new:最常见的方式.Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newInstance方法:反射的方式,只能调用空参的 ...
- 影刀rpa第一个学习项目开发所得
1.我要在某个位置新增一条指令,但是可能没有选择好的原因,这条指令被添加到指令的最后面了,我的指令行数有几十行,然后我就要把这条指令拖动到上一屏我指定的位置上,但当我拖动指令到了当前屏最上方时,发现编 ...
- 在Visual Studio 中使用git系列文章目录
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- VS Code Snippet Generator 插件 生成 vscode代码片段
VS Code Snippet Generator 插件 生成 vscode代码片段
- 图片裁剪插件 vue-cropper [vue插件推荐]
一个优雅的图片裁剪插件 https://www.npmjs.com/package/vue-cropper http://github.xyxiao.cn/vue-cropper/example/
- 后端基础PHP—PHP表单验证
后端基础PHP-PHP表单验证 1.PHP表单 2.PHP连接MySQL 一.PHP表单介绍 关于表单 PHP表单,在网页中主要负责采集数据 通俗理解,在银行办业务需要填一张纸质的表,需要向表上填信息 ...
- 04_QT_Windows开发环境搭建
FFmpeg 为什么选择FFmpeg? 每个主流平台基本都有自己的音视频开发库(API),用以处理音视频数据,比如: iOS:AVFoundation.AudioUnit等 Android:Media ...