题意:

      给你明天的出租车订单,订单中包含每个人的起点和终点坐标,还有时间,如果一辆出租车想接一个乘客必须在每个订单前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. 《C++ Primer》笔记 第7章 类

    成员函数的声明必须在类的内部,它的定义则既可以在类的内部也可以在类的外部.作为接口组成部分的非成员函数,它们的定义和声明都在类的外部. 定义在类内部的函数是隐式的inline函数. 成员函数通过一个名 ...

  2. windows本地连接虚拟机上的ubuntu的redis,以及无法连接解决方法(redisDesktopManager Jedis详细步骤)

    一.环境 1.ubuntu20.04 . redis 5.0.7 在ubuntu上下载redis,执行命令 sudo apt install redis 2.redisDesktopManager下载 ...

  3. 2020年12月-第01阶段-前端基础-HTML常用标签

    1. HTML常用标签 首先 HTML和CSS是两种完全不同的语言,我们学的是结构,就只写HTML标签,认识标签就可以了. 不会再给结构标签指定样式了. HTML标签有很多,这里我们学习最为常用的,后 ...

  4. STM32 ADC详细篇(基于HAL库)

    一.基础认识 ADC就是模数转换,即将模拟量转换为数字量 l  分辨率,读出的数据的长度,如8位就是最大值为255的意思,即范围[0,255],12位就是最大值为4096,即范围[0,4096] l  ...

  5. mongoDB服务器连接不上Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException:

    一大早打开node项目就报错,终端报 UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFU ...

  6. go中errgroup源码解读

    errgroup 前言 如何使用 实现原理 WithContext Go Wait 错误的使用 总结 errgroup 前言 来看下errgroup的实现 如何使用 func main() { var ...

  7. 使用zap接收gin框架默认的日志并配置日志归档

    目录 使用zap接收gin框架默认的日志并配置日志归档 gin默认的中间件 基于zap的中间件 在gin项目中使用zap 使用zap接收gin框架默认的日志并配置日志归档 本文介绍了在基于gin框架开 ...

  8. java将数据生成csv文件

    1,httpRequest接口触发进程[或者可以换成其他方式触发] /** * 出入库生成CSV文件 * @param req * @param params * @return */@Request ...

  9. Java基础:特性write once;run anywhere!

    三高:高可用 高性能 高并发 特性: 简单性 面向对象:万物皆为对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性 Java三大版本 javaSE:标准版(桌面程序,控制台) javaME ...

  10. 动态规划-最长公共上升子序列-n^2解法

    1. 题目描述 给定两个数列\(A, B\),如果他们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列.求\(A\)和\(B\)的最长公共上升子序列. 输入格 ...