Repairing Company(poj 3216)
题目大意:
有Q个地点,告诉你Q个地点之间的相互距离(从i地点赶到j地点需要的时间)。有M项任务,
给你M项任务所在的地点block、开始时间start和任务完成需要时间time。一个工人只有在
他准备完成的下一项任务开始之前完成手上的任务,然后在下一项任务开始之前赶到下一项
任务的地点,才能完成这两项任务。问:最少需要多少个工人来完成这M项任务。
/*
对于这类二分图的最小路径覆盖,我是这么理解的:
那这道题来说,我们可以先假设一共需要m个工人,然后经过二分图匹配,
每匹配一对,说明有两项任务可以由一个工人完成,m就减1,最后,剩下
的m即为所求
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define M 210
#define N 22
using namespace std;
int map[N][N],used[M],belong[M],a[M][M],q,m;
struct node
{
int pos,begin,end;
};node e[M];
void Floyed()
{
for(int k=;k<=q;k++)
for(int i=;i<=q;i++)
for(int j=;j<=q;j++)
if(i!=j&&i!=k&&j!=k)
map[i][j]=min(map[i][k]+map[k][j],map[i][j]);
}
int find(int i)
{
for(int j=;j<=m;j++)
if(!used[j]&&a[i][j])
{
used[j]=;
if(!belong[j]||find(belong[j]))
{
belong[j]=i;
return ;
}
}
return ;
}
int main()
{
while()
{
memset(map,0x3f3f3f3f,sizeof(map));
memset(used,,sizeof(used));
memset(belong,,sizeof(belong));
memset(a,,sizeof(a));
scanf("%d%d",&q,&m);
if(q==&&m==)break;
for(int i=;i<=q;i++)
for(int j=;j<=q;j++)
{
int x;
scanf("%d",&x);
if(x!=-)
map[i][j]=map[j][i]=x;
}
Floyed();
for(int i=;i<=m;i++)
{
int x;
scanf("%d%d%d",&e[i].pos,&e[i].begin,&x);
e[i].end=e[i].begin+x;
} for(int i=;i<=m;i++)
for(int j=;j<=m;j++)
if(i!=j&&e[j].begin-e[i].end>=map[e[i].pos][e[j].pos])
a[i][j]=;
int tot=;
for(int i=;i<=m;i++)
if(find(i))
{
memset(used,,sizeof(used));
tot++;
}
printf("%d\n",m-tot);
}
return ;
}
Repairing Company(poj 3216)的更多相关文章
- POJ 3216 Repairing Company(最小路径覆盖)
POJ 3216 Repairing Company id=3216">题目链接 题意:有m项任务,每项任务的起始时间,持续时间,和它所在的block已知,且往返每对相邻block之间 ...
- 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)
Charm Bracelet POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...
- Collecting Bugs(POJ 2096)
Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 3064 Accepted: 1505 ...
- Scout YYF I(POJ 3744)
Scout YYF I Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5565 Accepted: 1553 Descr ...
- 广大暑假训练1(poj 2488) A Knight's Journey 解题报告
题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A (A - Children of the Candy Corn) ht ...
- Games:取石子游戏(POJ 1067)
取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 37662 Accepted: 12594 Descripti ...
- BFS 或 同余模定理(poj 1426)
题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple 非零倍数 啊. 英语弱到爆炸,理解不了题意... ...
- 并查集+关系的传递(poj 1182)
题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...
- 昂贵的聘礼(poj 1062)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
随机推荐
- sdibt 1244 烦人的幻灯片
在这个OJ站还没号,暂时没提交,只是过了样例 真不愧是烦人的幻灯片,烦了我一小时 ---更新:OJ测试完毕,AC 烦人的幻灯片问题 Time Limit: 1 Sec Memory Limit: 6 ...
- Linux登录验证机制、SSH Bruteforce Login学习
相关学习资料 http://files.cnblogs.com/LittleHann/linux%E4%B8%AD%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E8%AE% ...
- JAVA-基本数据类型与引用数据类型区别
package com.liu.u6.copy1; /* * 基本数据类型与引用数据类型有什么区别 */ public class Sjlx { public int age; } package c ...
- C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试
WPF 没有用到 PictureBox, 而是用Image代替. 下面我试着加载显示一个图片 . XAML <Image x:Name="srcImg"Width=" ...
- js中改变不同的div属性值的操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- mysql 服务无法启动 服务没有报告任何错误
问题 解决方法 1.必须保证 mysql 下不存在 data 文件夹,如果存在 data 文件夹,则先删除 mysql 下的 data 文件夹,然后初始化 mysqld --initialize 服务 ...
- ubuntu12.04配置静态IP及设置DNS
静态IP配置方法: 编辑/etc/network/interfaces,删掉内容,并输入以下几行(假设你的网卡是eth0) sudo gedit /etc/network/interfaces aut ...
- Js注册等待
<为维护网上公共秩序和社会稳定,请您自觉遵守以下条款: <br> <br> 一.不得利用本站危害国家安全.泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用 ...
- 说说Java中的枚举(一)
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的.例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”. ...
- iOS-Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
今天在XCode6.3上面重写TabBar的时候,自定义tabBar的代理遇到的一个问题 在重写tabBar的代理的时候遇到了一个警告. 解决方法: 在.m文件中 警告消失.