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=0; i<len; ++i){
54        int u=v[cur][i];
55        if(vis[u]) continue;
56        vis[u]=1;
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=1; 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*60+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=1; i<n; ++i)
80           for(int j=i+1; j<=n; ++j){
81              if(nd[j].begin>=nd[i].end+(nd[i].d-nd[j].s)+1)//如果能够满足条件爱你到达另一个出发地点,两个节点之间建立一条有向边
82                 v[i].push_back(j);
83           }
84        int ans=0;
85        memset(link, 0, sizeof(link));
86        for(int i=1; i<=n; ++i){
87           memset(vis, 0, sizeof(vis));
88           if(dfs(i))  ++ans;
89        }
90        cout<<n-ans<<endl;
91        for(int i=1; i<=n; ++i)
92           v[i].clear();
93    }
94    return 0;
95 }

转载于:https://www.cnblogs.com/hujunzheng/p/3917850.html

poj2060Taxi Cab Scheme(二分图匹配)相关推荐

  1. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  2. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

  3. poj1274(二分图匹配)

    (一道基础的二分图匹配) 题目意思大概为N个牛和M个栅栏,一个牛和一个栅栏只能匹配一次,求最大匹配 直接套用二分图最大匹配模板即可 #include <iostream> #include ...

  4. poj2724(二分图匹配)

    题目大概意思为有部分奶酪需要处理,若两个奶酪的二进制只有一位不同,则可以一起处理,问最少需要处理几次 题目思路: 将可以一起处理的两个奶酪用边连接在一起,相当于边只连接二进制中有偶数个1的奶酪和二进制 ...

  5. 算法模板——二分图匹配

    实现功能为二分图匹配 原理:匈牙利算法,核心思想--匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之--匈牙利算法) 本程序以Codevs2776为例 详见Codev ...

  6. 算法:ACM二分图匹配 HDU2063

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...

  7. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配

    题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...

  8. POJ2536 二分图匹配

    题意:      有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...

  9. URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)

    题意:给出n个人的信息,名字.特征.排名. 在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输 ...

最新文章

  1. 双圆弧插值算法(一)
  2. Oracle去除表中重复记录
  3. mysql转化为GaussDB,GaussDB(openGauss)宣布开源,性能超越 MySQL 与 PostgreSQL
  4. js word 预览_微软补丁日:Word/DHCP/LNK远程代码执行漏洞预警
  5. .Net DES加密解密(不带向量)
  6. HTML语法初探(一)
  7. 电商海报怎么设计,先告诉复古海报要设计要点(附模板)
  8. Struts2请求处理流程及源码分析
  9. 一个很好的电磁学科普视频里融入自我的意识流“翻译”
  10. JSONObject.fromObject() 转换时的日期处理问题
  11. 数据抽样方式:概率抽样、非概率抽样
  12. Codeforces1548 D1. Gregor and the Odd Cows (Easy)(皮克公式+gcd+数学推导)
  13. mysql cnf和ini区别_再谈mysql的配置文件my.ini or my.cnf (之一) .
  14. Educational Codeforces Round 87 (Rated for Div. 2)A. Alarm Clock
  15. python转cython_10分钟带你入门Cython
  16. 品味kettle--(一)用eclipse 搭建源码
  17. android国外壁纸app,4K Wallpapers,火遍全球的4K高清壁纸App,谷歌市场1300万好评!...
  18. QObject::moveToThread:
  19. Serializable接口分析
  20. 【降价提醒】,您关注的商品已降价!

热门文章

  1. SpringBoot/Cloud 统一返回优雅设计+自定义异常
  2. Flowable 数据库表结构 ACT_ID_MEMBERSHIP
  3. SQL入门试炼创建表
  4. 云服务器 文件服务,云服务器文件服务
  5. 计算机网络按照延伸距离划分为,大学计算机考试练习题.doc
  6. C语言 const 修饰指针 - C语言零基础入门教程
  7. state的简写方式
  8. android studio中断,Android Studio是否有任何修复方法可以在Macbook Pro中断开测试设备的连接?...
  9. python 常用模块函数_python函数和常用模块(三),Day5
  10. python3库查看调用_Python 3 中调用 COM 的库文件 | 学步园