http://poj.org/problem?id=1325

题意:

两种机器A和B.机器A具有n种工作模式,称为mode_0,mode_1,...,mode_n-1,同样机器B有m种工作模式mode_0,mode_1,..., mode_m-1。开始时,它们都在mode_0工作。

对于给定的k个作业,可以在特定模式下的两个机器中的任一个中处理它们中的每一个。例如,作业0可以在机器A在mode_3处理,或者在机器B在mode_4处理,作业1可以在机器A中在mode_2处理,或者在机器B中在mode_4处理, 等等。因此,对于作业i,约束可以表示为三元组(i,x,y),这意味着它可以在mode_x的机器A中或者在mode_y的机器B中被处理。

显然,为了完成所有的工作,我们需要不时地改变机器的工作模式,但不幸的是,机器的工作模式只能通过手动重新启动来改变。通过更改作业的顺序并将每个作业分配给合适的机器,请编写程序以最小化重新启动机器的时间。 机器的工作模式只能通过手动重新启动来更改。通过更改作业的顺序并将每个作业分配给合适的机器,请编写程序以最小化重新启动机器的时间。机器的工作模式只能通过手动重新启动来更改。通过更改作业的顺序并将每个作业分配给合适的机器,请编写程序以最小化重新启动机器的时间。

思路:

建一个二分图,左边为A机器,右边为B机器,把每个作业可选的两个模式连一条边,这道题就是最小点覆盖问题,用最少的点去覆盖所有边。

最小点覆盖=最大匹配。

#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std; int g[][];
int vis[];
int match[];
int n, m, k; int dfs(int x)
{
for (int i = ; i < m; i++)
{
if (g[x][i] && !vis[i])
{
vis[i] = ;
if (match[i]==- || dfs(match[i]))
{
match[i] = x;
return ;
}
}
}
return ;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int id, a, b;
while (~scanf("%d",&n))
{
if (n == ) break;
scanf("%d%d", &m, &k);
memset(g, , sizeof(g));
memset(match, -, sizeof(match));
for (int i = ; i < k; i++)
{
scanf("%d%d%d", &id, &a, &b);
if (a!= && b!=)
{
g[a][b] = ;
}
}
int ans = ;
for (int i = ; i < n; i++)
{
memset(vis, , sizeof(vis));
if (dfs(i)) ans++;
}
printf("%d\n", ans);
}
return ;
}

POJ 1325 Machine Schedule(最小点覆盖)的更多相关文章

  1. poj 1325 Machine Schedule 最小点覆盖

    题目链接:http://poj.org/problem?id=1325 As we all know, machine scheduling is a very classical problem i ...

  2. HDU - 1150 POJ - 1325 Machine Schedule 匈牙利算法(最小点覆盖)

    Machine Schedule As we all know, machine scheduling is a very classical problem in computer science ...

  3. POJ - 1325 Machine Schedule 二分图 最小点覆盖

    题目大意:有两个机器,A机器有n种工作模式,B机器有m种工作模式,刚開始两个机器都是0模式.假设要切换模式的话,机器就必须的重新启动 有k个任务,每一个任务都能够交给A机器的i模式或者B机器的j模式完 ...

  4. POJ 1325 Machine Schedule(zoj 1364) 最小覆盖数

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=364 http://poj.org/problem?id=1325 题目大意: ...

  5. poj 1325 Machine Schedule 二分匹配,可以用最大流来做

    题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数. ======= ...

  6. POJ 1325 Machine Schedule——S.B.S.

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13731   Accepted: 5873 ...

  7. poj 1325 Machine Schedule

    Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64u   Java class name ...

  8. poj 1325 Machine Schedule 题解

    Machine Schedule Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14479   Accepted: 6172 ...

  9. poj 1325 Machine Schedule 解题报告

    题目链接:http://poj.org/problem?id=1325 题目意思:有 k 个作业,机器A有 n 个模式:0 ~ n-1,机器B 有 m 个模式:0~ m-1.每一个作业能运行在 A 的 ...

随机推荐

  1. Jetty源码学习-编译Jetty源码二三事

    工作小几个月了,JDK基础和web应用框架学的的差不多了,开始学习Jetty源码,费了小半天才编译成功,把自己拆过的坑记录下来. 编译前的环境: MAVEN 3.3.Eclips eLuna Serv ...

  2. 【BZOJ1818】[Cqoi2010]内部白点 扫描线+树状数组

    [BZOJ1818][Cqoi2010]内部白点 Description 无限大正方形网格里有n个黑色的顶点,所有其他顶点都是白色的(网格的顶点即坐标为整数的点,又称整点).每秒钟,所有内部白点同时变 ...

  3. 【BZOJ1720】[Usaco2006 Jan]Corral the Cows 奶牛围栏 双指针法

    [BZOJ1720][Usaco2006 Jan]Corral the Cows 奶牛围栏 Description Farmer John wishes to build a corral for h ...

  4. ios 图片拉伸不变形的方法

    如果一个椭圆图片,原图大小为30*30,而我们让它显示100*30,那么这个图片就会被拉伸,而且效果很难看.用下边的方法可以创建一个局部不被拉伸的图片. UIImage * buttonBg = [[ ...

  5. mysql日期处在某两个时间段之间的between比较

    where SYSDATE() between '2018-08-28 09:21:48' and '2018-08-28 09:25:48' sysdate()等于2018-08-28 09:23: ...

  6. git下载和上传项目

    首先是git的下载和安装: https://www.cnblogs.com/chenxqNo01/p/6372933.html git的简单使用: 从码云 clone 项目: git clone ht ...

  7. poj1584 A round peg in a ground hole【计算几何】

    含[判断凸包],[判断点在多边形内],[判断圆在多边形内]模板  凸包:即凸多边形 用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点. The ...

  8. Oracle等待事件之Enqueue(锁)

    1.产生原因 表示与内部队列机制相关的等待,例如对保护内部资源或者组件的锁的请求等,一种并发的保护机制,该等待意味着在访问同样的数据库资源时需要等待其他会话已经获取的锁. 2.确定产生问题的对象 死锁 ...

  9. yii2 controller发送json数据给前端

    最近要用yii2把之前老项目重构一下,因为前端打算用vuejs,所以Yii2前端那一套就放弃了,直接给前端传json数据 控制器代码: $response = Yii::$app->respon ...

  10. .m2\repository\org\springframework\spring-beans\4.1.4.RELEASE\spring-beans-4.1.4.RELEASE.jar!\org\springframework\beans\factory\xml\spring-beans-4.1.xsd

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <xsd:s ...