【UVA1194】Machine Schedule
题目大意:给定 N 个任务和两台机器,每个任务可以在任意一台机器上执行,每台机器有 N 个启动状态,不同任务需要机器在不同的状态下执行,求执行所有任务需要多少个不同的状态。
题解:由于一个任务一定要被两台机器中的一台执行,可以将任务看作边,连接两台机器的对应启动状态。所要求的是这个二分图的最大独立集,因此,只需求出其最大匹匹数即可。
代码如下
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) x.begin(),x.end()
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int dx[]={0,1,0,-1};
const int dy[]={1,0,-1,0};
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
//const int maxn=
const double eps=1e-6;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll sqr(ll x){return x*x;}
inline ll read(){
	ll x=0,f=1;char ch;
	do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
	do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
	return f*x;
}
/*--------------------------------------------------------*/
vector<int> G[101];
int match[101];bool vis[101];
int n,m,q,ans;
void read_and_parse(){
	m=read(),q=read();
	for(int i=1;i<=q;i++){
		int d=read(),x=read(),y=read();
		G[x].pb(y);
	}
}
bool dfs(int u){
	for(auto v:G[u])if(!vis[v]){
		vis[v]=1;
		if(!match[v]||dfs(match[v])){
			match[v]=u;return 1;
		}
	}
	return 0;
}
void solve(){
	for(int i=1;i<=n;i++){
		memset(vis,0,sizeof(vis));
		if(dfs(i))++ans;
	}
	printf("%d\n",ans);
}
void init(){
	ans=0;
	for(int i=1;i<=100;i++)G[i].clear();
	memset(match,0,sizeof(match));
}
int main(){
	while(n=read()){
		init();
		read_and_parse();
		solve();
	}
	return 0;
}
【UVA1194】Machine Schedule的更多相关文章
- 【Poj1325】Machine Schedule机器调度
		目录 List Description Input Output Sample Input Sample Output HINT Solution Code Position: http://poj. ... 
- 【HDU 1150】Machine Schedule(二分图匹配)
		机器的不同模式为点,对于每个job,建两条边 A机器需要的模式<->B机器需要的模式. 问题转化为最小点覆盖,然后用二分图的最小点覆盖==最大匹配,用匈牙利算法解. #include &l ... 
- 【leetcode】Course Schedule(middle)☆
		There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ... 
- 【最大流】【HDU3572】Task Schedule
		题意: 有N个事件,M台机器.事件有开始时间,持续时间,要在结束时间之前完成,问是否能完成所有事件? 非自己思考出来的 建图:把每个任务和每一天都看做一个点,添加源点和汇点.源点与每个任务之间连一条边 ... 
- 【hdu3842】 Machine Works
		http://acm.hdu.edu.cn/showproblem.php?pid=3842 (题目链接) 题意 一个公司使用一个厂房$D$天,希望获利最大.有$n$台机器,每一台可以在第$D_i$天 ... 
- 【332】Machine Learning
		Reference: 决策树方法-对买电脑进行分类预测 Reference: 最邻近规则分类(K-Nearest Neighbor)KNN算法应用 Reference: python 内建函数 str ... 
- 【贪心】hdu6180 Schedule
		题意:给你n个任务的开始时间和结束时间,一个机器同时最多执行一个任务,问你最少要几个机器.保证机器最少的前提下,问你每个机器的开动时间(最后一次关闭-第一次开启)之和最少是多少. 把这些线段画在数轴上 ... 
- 【hdu4045】Machine scheduling(dp+第二类斯特林数)
		传送门 题意: 从\(n\)个人中选\(r\)个出来,但每两个人的标号不能少于\(k\). 再将\(r\)个人分为不超过\(m\)个集合. 问有多少种方案. 思路: 直接\(dp\)预处理出从\(n\ ... 
- 【leecode】 Course Schedule
		class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>&am ... 
随机推荐
- Tomcat 常见的几个报错与启动问题
			报错:A child container failed during start 1.Caused by: java.lang.IllegalArgumentException: Servlet ma ... 
- Hbase获取流程
			1\\.客户端chou操作 2.服务器dauncaozuo操作 3\存储优化 
- 运维常用mysql语句
			1..select @@version; ##查询当前mysql的版本. 2. show variables like 'port';##查看mysql实例的端口. 3.show variables ... 
- 日历插件bootstrap-datetimepicker的使用感悟
			首先队长先综述一下插件的使用三步流程:即 1.引入插件 2.使用jquery选择器选择目标标签 3.对目标标签绑定插件函数来触发插件 雷同于python中的库的使用(安装库 导入库 引用库) 下面 ... 
- @Html自定义属性
			@Html.DropDownList("CardCode", (SelectList)ViewData["cardcodeselectlist"], " ... 
- c#处理json数据最好的方式,没有之一。
			c#处理json数据最好的方式,没有之一. 引用Json.Net(需要.NET 4.5及以上版本) using Newtonsoft.Json.Linq; 使用非常简单 JObject result ... 
- luogu3391
			P3391 [模板]文艺平衡树(Splay) 题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转 ... 
- Nginx 如何限制响应速度
			在 location 里设置 location { set $limit_rate 1k; 表示每秒只响应1k的速度 } 
- Apache与Nginx动静分离
			概述 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术.动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项 针对PH ... 
- LOJ2721 [NOI2018] 屠龙勇士 【扩展中国剩余定理】
			好久没写了,写一篇凑个数. 题目分析: 这题不难想,讲一下中国剩余定理怎么扩展. 考虑$$\left\{\begin{matrix}x \equiv a\pmod{b}\\ x \equiv c\pm ... 
