poj2060Taxi Cab Scheme(二分图匹配)
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(二分图匹配)相关推荐
- Dinic二分图匹配 || Luogu P3386
题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...
- 二分图匹配匈牙利算法DFS实现
1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...
- poj1274(二分图匹配)
(一道基础的二分图匹配) 题目意思大概为N个牛和M个栅栏,一个牛和一个栅栏只能匹配一次,求最大匹配 直接套用二分图最大匹配模板即可 #include <iostream> #include ...
- poj2724(二分图匹配)
题目大概意思为有部分奶酪需要处理,若两个奶酪的二进制只有一位不同,则可以一起处理,问最少需要处理几次 题目思路: 将可以一起处理的两个奶酪用边连接在一起,相当于边只连接二进制中有偶数个1的奶酪和二进制 ...
- 算法模板——二分图匹配
实现功能为二分图匹配 原理:匈牙利算法,核心思想--匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之--匈牙利算法) 本程序以Codevs2776为例 详见Codev ...
- 算法:ACM二分图匹配 HDU2063
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...
- BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配
题解 一道裸的二分图匹配,稍微有一点细节需要注意, 但是非常裸= = 本校并且住校的向自己的床和 自己认识的并且本校的人的床连边 离校的不需要向外连边 不是本校的就和自己认识的 并且是本校的人的床连边 ...
- POJ2536 二分图匹配
题意: 有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...
- URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)
题意:给出n个人的信息,名字.特征.排名. 在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输 ...
最新文章
- 双圆弧插值算法(一)
- Oracle去除表中重复记录
- mysql转化为GaussDB,GaussDB(openGauss)宣布开源,性能超越 MySQL 与 PostgreSQL
- js word 预览_微软补丁日:Word/DHCP/LNK远程代码执行漏洞预警
- .Net DES加密解密(不带向量)
- HTML语法初探(一)
- 电商海报怎么设计,先告诉复古海报要设计要点(附模板)
- Struts2请求处理流程及源码分析
- 一个很好的电磁学科普视频里融入自我的意识流“翻译”
- JSONObject.fromObject() 转换时的日期处理问题
- 数据抽样方式:概率抽样、非概率抽样
- Codeforces1548 D1. Gregor and the Odd Cows (Easy)(皮克公式+gcd+数学推导)
- mysql cnf和ini区别_再谈mysql的配置文件my.ini or my.cnf (之一) .
- Educational Codeforces Round 87 (Rated for Div. 2)A. Alarm Clock
- python转cython_10分钟带你入门Cython
- 品味kettle--(一)用eclipse 搭建源码
- android国外壁纸app,4K Wallpapers,火遍全球的4K高清壁纸App,谷歌市场1300万好评!...
- QObject::moveToThread:
- Serializable接口分析
- 【降价提醒】,您关注的商品已降价!
热门文章
- SpringBoot/Cloud 统一返回优雅设计+自定义异常
- Flowable 数据库表结构 ACT_ID_MEMBERSHIP
- SQL入门试炼创建表
- 云服务器 文件服务,云服务器文件服务
- 计算机网络按照延伸距离划分为,大学计算机考试练习题.doc
- C语言 const 修饰指针 - C语言零基础入门教程
- state的简写方式
- android studio中断,Android Studio是否有任何修复方法可以在Macbook Pro中断开测试设备的连接?...
- python 常用模块函数_python函数和常用模块(三),Day5
- python3库查看调用_Python 3 中调用 COM 的库文件 | 学步园