博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1150 Machine Schedule
阅读量:7129 次
发布时间:2019-06-28

本文共 3310 字,大约阅读时间需要 11 分钟。

Machine Schedule

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 103 Accepted Submission(s): 68
 
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 100 1 11 1 22 1 33 1 44 2 15 2 26 2 37 2 48 3 39 4 30
 
Sample Output
3
 
 
Source
Asia 2002, Beijing (Mainland China)
 
Recommend
Ignatius.L

 

 

题目给出了 k项任务 , 然后有A , B两种机器 (机器A有n中模式,机器B 有m种模式),  任务 ki  可以在 Ax 或 By模式下完成 , 

然后机器在模式转换的时候需要重启, 然后要求最少的重启次数去完成所有的任务。

这个确实想了挺久,用最大二分匹配解决最少点覆盖问题 , 就是用尽量少的点来覆盖(与边相关联)所有的边 。

然后这题要把任务看成边去构图,求一次最大匹配就行了。

 

 

#include 
#include
#include
using namespace std;const int N = 111;int n , m , k;int g[N][N] , lx[N];bool vis[N];bool dfs(int u ){ for(int v = 1; v < m ; ++v ){ if( g[u][v] && !vis[v] ){ vis[v] = 1 ; if( lx[v] == -1 ||dfs (lx[v]) ){ lx[v] = u ; return true ; } } } return false ;}int KM(){ int res = 0; memset(lx , -1 ,sizeof lx ); for(int i = 1 ; i < n ; ++i ){ memset (vis , false , sizeof vis ); if( dfs(i) ) res++; } return res ;}int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); #endif int a , x , y ; while(cin>>n){ if(!n)break; cin>>m>>k; memset(g , 0 ,sizeof g) ; while(k-- ) { cin>>a >> x >> y ; if(x == 0 || y == 0 ) continue; g[x][y] = 1 ; } printf("%d\n",KM()); } return 0 ;}

 

转载于:https://www.cnblogs.com/hlmark/p/3968049.html

你可能感兴趣的文章
Get和Post请求区别
查看>>
开源史上最成功的8个开源产品
查看>>
PHP操作MySQL
查看>>
单臂路由与三层交换机动态配置
查看>>
MyBatis学习总结(六)——调用存储过程
查看>>
Docker命令详解
查看>>
servlet jsp 各种路径获取。。
查看>>
应用系统架构设计
查看>>
【POJ】第二章 简单计算题之课后题
查看>>
MFC建立应用程序启示录(创世纪新篇)
查看>>
自定义实现session持久化
查看>>
如何处理xencenter中无法显示vm的performance信息
查看>>
oracle远程导出导入
查看>>
Citrix XenApp/XenDesktop产品发布策略调整
查看>>
我的友情链接
查看>>
MySql安装
查看>>
最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
查看>>
11g默认审计选项
查看>>
Know more about RAC statistics and wait event
查看>>
【12c新特性】多LGWR进程SCALABLE LGWR "_use_single_log_writer"
查看>>