这是一道描述非常不清楚的题目

首先解释一下,题目中的ti是任务开始时间不是结束时间,

然后维修人员可以理解为可以再任意时间从公司出发;

好,首先不难想到用floyd预处理一下;

然后我们把每个任务看成一个点,显然有些维修员完成一个任务后还可以接着完成别的任务;

这样我们就可以构造出一张有向无环图;

考虑到每个任务这需要我们做一次且仅一次,并且现在我们要求最少的人去覆盖所有的点;

不难想到最小路径覆盖,构造二分图求解即可

 const inf=;
type node=record
       next,point:longint;
     end; var edge:array[..] of node;
    p,cx,cy,d,s,w:array[..] of longint;
    v:array[..] of boolean;
    a:array[..,..] of longint;
    len,ans,i,j,n,m,k:longint; function min(a,b:longint):longint;
  begin
    if a>b then exit(b) else exit(a);
  end; procedure add(x,y:longint);
  begin
    inc(len);
    edge[len].point:=y;
    edge[len].next:=p[x];
    p[x]:=len;
  end; function find(x:longint):longint;
  var i,y:longint;
  begin
    i:=p[x];
    while i<>- do
    begin
      y:=edge[i].point;
      if not v[y] then
      begin
        v[y]:=true;
        if (cy[y]=-) or (find(cy[y])=) then
        begin
          cx[x]:=y;
          cy[y]:=x;
          exit();
        end;
      end;
      i:=edge[i].next;
    end;
    exit();
  end; begin
  readln(n,m);
  while (n<>) do
  begin
    len:=;
    fillchar(p,sizeof(p),);
    for i:= to n do
      for j:= to n do
      begin
        read(a[i,j]);
        if a[i,j]=- then a[i,j]:=inf;
      end;
    for k:= to n do
      for i:= to n do
        if (i<>k) then
          for j:= to n do
            if (i<>j) and (j<>k) then
              a[i,j]:=min(a[i,j],a[i,k]+a[k,j]);
    for i:= to m do
      readln(w[i],s[i],d[i]);
    for i:= to m do
      for j:= to m do
      begin
        if i=j then continue;
        if a[w[i],w[j]]+s[i]+d[i]<=s[j] then add(i,j);
      end;
    ans:=;
    fillchar(cx,sizeof(cx),);
    fillchar(cy,sizeof(cy),);
    for i:= to m do
      if cx[i]=- then
      begin
        fillchar(v,sizeof(v),false);
        ans:=ans+find(i);
      end;
    writeln(m-ans);
    readln(n,m);
  end;
end.

poj3216的更多相关文章

  1. POJ3216 最小路径覆盖

    首先说一下题意,Q个区域,M个任务,每个区域任务可能有多个,然后给你个到各地所需时间的矩阵,每个任务都有开始和持续时间,问最少需要多少工人? 每个工人只能同时执行一个任务. 通过题意,我的瞬间反应就是 ...

  2. poj3216 Prime Path(BFS)

    题目传送门  Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...

  3. poj分类 很好很有层次感。

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  4. 【转】POJ题目分类推荐 (很好很有层次感)

    OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期: 一. ...

  5. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  6. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

  7. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  8. acm常见算法及例题

    转自:http://blog.csdn.net/hengjie2009/article/details/7540135 acm常见算法及例题  初期:一.基本算法:     (1)枚举. (poj17 ...

  9. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

随机推荐

  1. 6个好用的Web开发工具

    在过去的几年间,涌现出了很多Web开发工具,它们大多还是比较吸引人的,方便了我们的工作.我们可以学习一下这些新东西,短时间就可以拓宽思路(PHP100推荐:学习10分钟,改变你的程序员生涯).这些应用 ...

  2. SQL Server 2000 “用户XX已经存在” 处理方法

    -- 目前遇到这个问题都是在切换服务器时发生的. 旧服务器备份的数据库还原到新服务器,都会遇到这种问题 --切决方案如下: -- 查找孤立用户列表 EXECUTE sp_change_users_lo ...

  3. Ubuntu 14.04的SWAP 为0

    [@@@@@@]# free total used free shared buffers cached Mem: 1024976 248992 775984 0 16820 73128 -/+ bu ...

  4. Fedora 17下安装Oracle 10g详细图文教程

    一.硬件要求——内存 & swap & 硬盘 最小内存与swap: 1 GB of RAM & swap 建议内存与swap: 2 GB of RAM & swap [ ...

  5. centos修改ssh端口

    1.编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222-A INPUT -m state --state NEW -m tcp -p tcp --dport ...

  6. 在工程中添加pch文件

    在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编 ...

  7. python 开发webService

    最近在学习用python 开发webservice,费了半天时间把环境搭好,记录下具体过程,以备后用. 首先系统上要有python.其次要用python进行webservice开发,还需要一些库: 1 ...

  8. Extjs4.2——bbar的默认类型(xtype)

    bbar:在Panel经常使用的工具栏 如下面的示例——这将牵涉本文要追寻的问题:在下面的Panel中的bbar第一个组件明确指定的xtype:'button',第二个没有明确指出,那么它是何类型,为 ...

  9. [cc150] check palindrome of a singly linked list

    Problem: Implement a function to check if a singly linked list is a palindrome. 思路: 最简单的方法是 Reverse ...

  10. suse pshell连接不上

    /etc/ssh/sshd_config #PasswordAuthentication no改成yessuse默认为密钥认证