题目大意:

有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)的更多相关文章

  1. POJ 3216 Repairing Company(最小路径覆盖)

    POJ 3216 Repairing Company id=3216">题目链接 题意:有m项任务,每项任务的起始时间,持续时间,和它所在的block已知,且往返每对相邻block之间 ...

  2. 01背包问题:Charm Bracelet (POJ 3624)(外加一个常数的优化)

    Charm Bracelet    POJ 3624 就是一道典型的01背包问题: #include<iostream> #include<stdio.h> #include& ...

  3. Collecting Bugs(POJ 2096)

    Collecting Bugs Time Limit: 10000MS   Memory Limit: 64000K Total Submissions: 3064   Accepted: 1505 ...

  4. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

  5. 广大暑假训练1(poj 2488) A Knight's Journey 解题报告

    题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A   (A - Children of the Candy Corn) ht ...

  6. Games:取石子游戏(POJ 1067)

    取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37662   Accepted: 12594 Descripti ...

  7. BFS 或 同余模定理(poj 1426)

    题目:Find The Multiple 题意:求给出的数的倍数,该倍数是只由 1与 0构成的10进制数. 思路:nonzero multiple  非零倍数  啊. 英语弱到爆炸,理解不了题意... ...

  8. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  9. 昂贵的聘礼(poj 1062)

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

随机推荐

  1. 求DAG上两点的最短距离

    Problem 给出一个不带边权(即边权为1)的有向无环图(unweighted DAG)以及DAG上两点s, t,求s到t的最短距离,如果无法从s走到t,则输出-1. Solution DFS,BF ...

  2. ISO 基础之 (十三) protocol 协议

    一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采 ...

  3. POJ1258Agri-Net(prime基础)

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 46811   Accepted: 19335 Descri ...

  4. 代码重构-3 用Tuple代替 out与ref

    返回单一值是良好的编程习惯 原代码: public LotteryViewModel ValidateLottery(LotteryBaseData baseData, int authTime, o ...

  5. 使用servletAPI三种方式简单示例

    一.直接实现Action接口或集成ActionSupport类(推荐) public class HelloAction implements Action { @Override public St ...

  6. 转:Java NIO系列教程(八) DatagramChannel

    Java NIO中的DatagramChannel是一个能收发UDP包的通道.因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入.它发送和接收的是数据包. 打开 DatagramChann ...

  7. APN APN指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。

    apn 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . APN指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络. 对于手机用户来说,可 ...

  8. Windows下安装配置SubVersion的简明步骤

    [使用的安装程序和文档说明] svn-1.4.0-setup.exe:Subversion服务端1.4.0安装程序: SubService.rar:  SubServe服务Windows辅助工具; T ...

  9. getVisibleSize 和 getContentSize 和 getWinSize

    getVisibleSize:获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize.getVisibleOr ...

  10. C语言内存对齐详解(2)

    接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...