题意:

      给你明天的出租车订单,订单中包含每个人的起点和终点坐标,还有时间,如果一辆出租车想接一个乘客必须在每个订单前1分钟到达,也就是小于等于time-1,问你完成所有订单要最少多少量出租车...

思路:

     典型的最小路径覆盖,对于最小路径覆盖,我们可以这么理解,最次的情况是N辆,而只要找到那么一组可以与其匹配,就是用一辆车的就从n里减去一辆,我们找到最大的这种匹配数量,也就是最大匹配,然后N-ans ,就行了...这个题目有个地方挺坑的,就是给了个提示,说出租车可能跑到后半夜,一开始我sb了,当时间大于半夜凌晨就更新成第二天的时间,结果wa了,想想也是,更新完以前拉不了的活可能拉了,后来直接把更新的这个去掉就ac了,ac的时候感觉很奇怪,是不是数据弱?
我感觉可以不更新时间,而是把23.01 01.02 变成23.01 25.02,因为说了订单是按时间顺序给的,可是在仔细看看题目,说的是第二天的订单,第二天是不是就不会出现第三天的任务? 如果会的话就会出现第四天的任务....fuck,不想了,就当他只有第二天的任务吧,所以无视那条提示就可以ac了.

#include<stdio.h>
#include<string.h> #define N_node 500 + 50
#define N_edge 300000

typedef struct
{
int
to ,next;
}
STAR; typedef struct
{
int
t;
int
xs ,xe ,ys ,ye;
int
time;
}
NODE; STAR E[N_edge];
NODE node[N_node];
int
list[N_node] ,tot;
int
mk_dfs[N_node] ,mk_gx[N_node]; void add(int a ,int b)
{

E[++tot].to = b;
E[tot].next = list[a];
list[a] = tot;
} int
abss(int x)
{
return
x > 0 ? x : -x;
} int
maxx(int x ,int y)
{
return
x > y ? x : y;
} bool
ok(NODE a ,NODE b)
{
int
dis = abss(a.xe - b.xs) + abss(a.ye - b.ys);
int
t = a.t + a.time + dis + 1;
//if(t >= 1440) t -= 1440;
return t <= b.t;
} int
Xyl_dfs(int s)
{
for(int
k = list[s] ;k ;k = E[k].next)
{
int
to = E[k].to;
if(
mk_dfs[to]) continue;
mk_dfs[to] = 1;
if(
mk_gx[to] == -1 || Xyl_dfs(mk_gx[to]))
{

mk_gx[to] = s;
return
1;
}
}
return
0;
} int main ()
{
int
t ,n ,i ,j;
int
h ,m;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d" ,&n);
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d:%d %d %d %d %d" ,
&
h ,&m ,
&
node[i].xs ,&node[i].ys ,
&
node[i].xe ,&node[i].ye);
node[i].t = h * 60 + m;
node[i].time = abss(node[i].xs - node[i].xe) + abss(node[i].ys - node[i].ye);
}
memset(list ,0 ,sizeof(list));
tot = 1;
for(
i = 1 ;i <= n ;i ++)
for(
j = i + 1 ;j <= n ;j ++)
{
if(
ok(node[i] ,node[j]))
add(i ,j);
}
int
ans = 0;
memset(mk_gx ,255 ,sizeof(mk_gx));
for(
i = 1 ;i <= n ;i ++)
{

memset(mk_dfs ,0 ,sizeof(mk_dfs));
ans += Xyl_dfs(i);
}

printf("%d\n" ,n - ans);
}
return
0;
}



hdu1960 最小路径覆盖的更多相关文章

  1. 【HDU1960】Taxi Cab Scheme(最小路径覆盖)

    Taxi Cab Scheme Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. loj 1429(可相交的最小路径覆盖)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1429 思路:这道题还是比较麻烦的,对于求有向图的可相交的最小路径覆盖,首先要解决成环问 ...

  3. 【HDU3861 强连通分量缩点+二分图最小路径覆盖】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题目大意:一个有向图,让你按规则划分区域,要求划分的区域数最少. 规则如下:1.有边u到v以及有 ...

  4. POJ 3216 最小路径覆盖+floyd

    Repairing Company Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 6646   Accepted: 178 ...

  5. POJ3020Antenna Placement(最小路径覆盖+重在构图)

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7788   Accepted: 3880 ...

  6. POJ 3020 (二分图+最小路径覆盖)

    题目链接:http://poj.org/problem?id=3020 题目大意:读入一张地图.其中地图中圈圈代表可以布置卫星的空地.*号代表要覆盖的建筑物.一个卫星的覆盖范围是其周围上下左右四个点. ...

  7. 【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)

    http://wikioi.com/problem/1904/ 这题没看数据的话是一个大坑(我已报告官方修复了),答案只要求数量,不用打印路径...orz 最小路径覆盖=n-最大匹配,这个我在说二分图 ...

  8. hiho 第118周 网络流四·最小路径覆盖

    描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游 ...

  9. 【网络流24题----03】Air Raid最小路径覆盖

    Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

随机推荐

  1. MySQL索引由浅入深

    索引是SQL优化中最重要的手段之一,本文从基础到原理,带你深度掌握索引. 一.索引基础 1.什么是索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,索引对于 ...

  2. 基于4H-SIC的先进集成电路用n型LDMOS晶体管

    基于4H-SIC的先进集成电路用n型LDMOS晶体管 摘要: 通过对具有不同的设计方式的具有减小的表面电场的横向4H-SIC-N型-横向扩散金属氧化物半导体(LDMOS)晶体管进行测量和模拟,得到了得 ...

  3. Android实现三角形气泡效果方式汇总

    在开发过程中,我们可能会经常遇到这样的需求样式: 这张图是截取京东消息通知的弹出框,我们可以看到右上方有个三角形的气泡效果,这只是其中一种,三角形的方向还可以是上.下.左.右. 通过截图可以发现,气泡 ...

  4. python基础学习之深浅复制的概念

    1.深浅复制 浅复制,python自带,深复制需要导入模块包 import copy 使用深浅复制,根据id不同写出他们的区别a = [1,2,3]b = [6,7,8]s1 = [a,b]print ...

  5. Linux sed 使用笔记

    sed 工具使用笔记 Linux中经常需要对一些超大的文本文件进行操作,例如 GB 级别的 CSV.TXT.LOG 文件,如果使用 vi 或者 vim 编辑器操作会非常慢且卡,此时 sed 工具或许可 ...

  6. Hdu 4821 (字符串hash+map)

    题目链接https://vjudge.net/problem/HDU-4821 题意:给定字符串S ,询问用几个子串满足 : 1.长度为n*len  . 2. n个子串都不相同. 题解:倒序hash将 ...

  7. 【PAT甲级】1119 Pre- and Post-order Traversals(前序后序转中序)

    [题目链接] [题意] 根据二叉树的前序和后序序列,如果中序序列唯一,输出Yes,如果不唯一输出No,并输出这个中序序列. [题解] 众所周知,二叉树是不能够根据前序和中序建立的,为什么呢?首先需要明 ...

  8. Go语言GC实现原理及源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/475 本文使用的 Go 的源码1.15.7 介绍 三色标记法 三色标 ...

  9. 从I/O多路复用到Netty,还要跨过Java NIO包

    本文是Netty系列第4篇 上一篇文章我们深入了解了I/O多路复用的三种实现形式,select/poll/epoll. 那Netty是使用哪种实现的I/O多路复用呢?这个问题,得从Java NIO包说 ...

  10. Android 系统开发做什么?

    题外话 18 年我从 Android 应用开发转 Framework 层开发了,从此开启了 996 幸福生活,博客技术文更新基本停滞了,被工作占据了过多的精力,实在没时间像以前一样拟稿.写作,实践.反 ...