1. /*
  2. 题意: 出租车 有一个出发的时间,从点(a, b)到点(c, d),时间为
  3. abs(a-c)+abs(b-d)! 一辆车可以在运完一个乘客后运另一个乘客,
  4. 条件是此车要在预约开始前一分钟之前到达出发地, 问最少需要几辆车
  5. 搞定所有预约。
  6.  
  7. 思路:有向边进行建图,因为出发时间是升序的!
  8. t0: (a0, b0) ->(c0, d0)表示预约在t0时间出发从(a,b)到(c,d);//节点x
  9. t1: (a1, b1) ->(c1, d1)表示预约在t1时间出发从(a1,b1)到(c1,d1);//节点y
  10.  
  11. 如果可能的话从t0时间出发的车到达目的地后,如果满足从(c,d)到(a1,b1)
  12. 也就是从第一个目的地到达下一个出发地的时间t2 + 1<=t1, 那么完全就不用
  13. 其他的车再来了!两次的预约都搞定了!
  14. 如果满足的话,节点x 和 节点y建立一条有向边!
  15. 最后通过匈牙利算法搞定.....
  16. */
  17. #include<iostream>
  18. #include<cmath>
  19. #include<cstdio>
  20. #include<cstring>
  21. #include<algorithm>
  22. #include<vector>
  23. #define M 505
  24. using namespace std;
  25.  
  26. struct point{
  27. int x, y;
  28. point(){}
  29. point(int x, int y){
  30. this->x=x;
  31. this->y=y;
  32. }
  33. int operator -(point a) {
  34. return abs(x-a.x) + abs(y-a.y);
  35. }
  36. };
  37.  
  38. struct node{
  39.  
  40. int begin, end;
  41. point s, d;
  42. };
  43.  
  44. node nd[M];
  45. vector<int>v[M];
  46. int vis[M];
  47. int link[M];
  48.  
  49. int n;
  50.  
  51. bool dfs(int cur){
  52. int len=v[cur].size();
  53. for(int i=; i<len; ++i){
  54. int u=v[cur][i];
  55. if(vis[u]) continue;
  56. vis[u]=;
  57. if(!link[u] || dfs(link[u])){
  58. link[u]=cur;
  59. return true;
  60. }
  61. }
  62. return false;
  63. }
  64.  
  65. int main(){
  66. int t;
  67. scanf("%d", &t);
  68. while(t--){
  69.  
  70. scanf("%d", &n);
  71. for(int i=; i<=n; ++i){
  72. int b, e, x1, y1, x2, y2;
  73. scanf("%d:%d %d %d %d %d", &b, &e, &x1, &y1, &x2, &y2);
  74. nd[i].begin=b*+e;
  75. nd[i].s=point(x1, y1);
  76. nd[i].d=point(x2, y2);
  77. nd[i].end=nd[i].begin+(nd[i].s-nd[i].d);
  78. }
  79. for(int i=; i<n; ++i)
  80. for(int j=i+; j<=n; ++j){
  81. if(nd[j].begin>=nd[i].end+(nd[i].d-nd[j].s)+)//如果能够满足条件爱你到达另一个出发地点,两个节点之间建立一条有向边
  82. v[i].push_back(j);
  83. }
  84. int ans=;
  85. memset(link, , sizeof(link));
  86. for(int i=; i<=n; ++i){
  87. memset(vis, , sizeof(vis));
  88. if(dfs(i)) ++ans;
  89. }
  90. cout<<n-ans<<endl;
  91. for(int i=; i<=n; ++i)
  92. v[i].clear();
  93. }
  94. return ;
  95. }

poj2060Taxi Cab Scheme(二分图匹配)的更多相关文章

  1. poj 2060 Taxi Cab Scheme (二分匹配)

    Taxi Cab Scheme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5710   Accepted: 2393 D ...

  2. UVA 1201 - Taxi Cab Scheme(二分图匹配+最小路径覆盖)

    UVA 1201 - Taxi Cab Scheme 题目链接 题意:给定一些乘客.每一个乘客须要一个出租车,有一个起始时刻,起点,终点,行走路程为曼哈顿距离,每辆出租车必须在乘客一分钟之前到达.问最 ...

  3. 二分图最小路径覆盖--poj2060 Taxi Cab Scheme

    Taxi Cab Scheme 时间限制: 1 Sec  内存限制: 64 MB 题目描述 Running a taxi station is not all that simple. Apart f ...

  4. UVa 二分图匹配 Examples

    这些都是刘汝佳的算法训练指南上的例题,基本包括了常见的几种二分图匹配的算法. 二分图是这样一个图,顶点分成两个不相交的集合X , Y中,其中同一个集合中没有边,所有的边关联在两个集合中. 给定一个二分 ...

  5. Taxi Cab Scheme POJ && HDU

    Online Judge Problem Set Authors Online Contests User Web Board Home Page F.A.Qs Statistical Charts ...

  6. Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配

    /** 题目:Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配 链接:https://vjudge.net/proble ...

  7. UVA 12549 - 二分图匹配

    题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会 ...

  8. POJ 1274 裸二分图匹配

    题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #includ ...

  9. BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Sta ...

随机推荐

  1. 8.1 消息通信 EventBus

    EventBus是一个事件发布和订阅的框架.EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast 在Fragment,Act ...

  2. 写在分类之首-----to do list!

    1.增强学习 http://www.wildml.com/2016/10/learning-reinforcement-learning/ 2.RNN 别人的博客目录: 1.学些增强学习(通过代码,练 ...

  3. pivotx的entry和page内容里的日期格式修改

    欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=63 1. 文章发布时间的确定 如果服务器空间在国内还好说, 如果在国外的话, 文章编辑时 ...

  4. 直接代码POST数据调用WebService

    ps:使用过webservice的童鞋大概都明白它是基于Soap协议交换数据的,同时Soap协议是对HTTP协议的扩展,其实我们就可以认为调用一个WEB服务就是通过http协议GET或POST数据的过 ...

  5. Emberjs之ComputedProperty

    计算属性,以下简称CP.简单概括来讲,就是在需要属性值的时候计算一个Function,并将Function返回的值保存在属性中,当第二次获取属性值时,如果发现属性并未改变则直接读取属性,如果属性依赖的 ...

  6. Java IO2:RandomAccessFile

    RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法.RandomAccessFile类支持"随机访 ...

  7. Java虚拟机5:Java垃圾回收(GC)机制详解

    哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象.那么如何找到这些对象? 1.引用计数法 这个算法的实现是,给对象中添 ...

  8. 基于java的设计模式入门(1)——为什么要学习设计模式

    大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ...

  9. Nunit工具做C#的单元测试

      Nunit工具做C#的单元测试 学习心得 编写人:罗旭成 时间:2013年9月2日星期一 1.开发人员如何做单元测试 单元测试是针对最小的可测试软件元素(单元)的,它所测试的内容包括单元的内部结构 ...

  10. [异常解决] Keil安装好nRF51822开发环境,运行DEMO报错:Error:“GPIOTE_CONFIG_NUM_OF_LOW_POWER_ENVENTS” is undefined

    1.问题描述 when compiling "ble_app_proximity" exampled by Nordic, it indicates errors: "D ...