当前位置: 首页 > news >正文

poj 2060

题意:在一个矩形城市里面,有间出租车公司收到翌日的预订行程M个,每个给出起点、终点坐标,两个地点之间的车程就是那两个点之间的曼哈顿距离,车起码要在一个行程的出发时间前一分钟到起点。求最少要多少出租车才够完成所有预订?

分析:每个起点的出发时间是确定的,起点与终点之间的距离也是确定的,因此每个行程的开始和结束的时间地点都是确定的。记A,B是两个行程的起点,A',B'分别是终点,假如由A'到B的时间还在B的规定时间前,那么要走完AA',BB'要用的出租车就只需要一台。把起点与终于合成一个点(这样每个点就是一个行程),若A后能接上B则添加一条有向边<A,B>,把图建好之后,求出最小路径覆盖就是答案。(按照任意两个点A,B之间的时间关系,若有A到B的通路就不可能有B到A的通路,因此图中不会有环。)

PS:按照题意还是有可能存在1→2,2→3,4→2,2→5这种交叉的情况,这样就要用floyd求可达矩阵,但是加上floyd发现TLE了,于是注释掉 floyd,居然就AC了。

View Code
 1 #include<cstdio>
 2 #include<cmath>
 3 struct point
 4 {
 5     int departure,arrival;
 6     int x0,y0,x1,y1;
 7 };
 8 int mat[2][500],nx,ny;
 9 bool visited[500],matrix[500][500];
10 point p[500];
11 int path(int u)
12 {
13     int i;
14     for(i=0;i<ny;i++)
15     {
16         if(matrix[u][i] && !visited[i])
17         {
18             visited[i]=true;
19             if(mat[1][i]==-1 || path(mat[1][i]))
20             {
21                 mat[0][u]=i;
22                 mat[1][i]=u;
23                 return 1;
24             }
25         }
26     }
27     return 0;
28 }
29 int Hungary()
30 {
31     int ans=0,i,j;
32     for(i=0;i<nx;i++)
33         mat[0][i]=-1;
34     for(i=0;i<ny;i++)
35         mat[1][i]=-1;
36     for(i=0;i<nx;i++)
37     {
38         for(j=0;j<ny;j++)
39             visited[j]=false;
40         ans+=path(i);
41     }
42     return ans;
43 }
44 int format(int a,int b)
45 {
46     return a*60+b;
47 }
48 int manhattan(int x0,int y0,int x1,int y1)
49 {
50     return abs(x0-x1)+abs(y0-y1);
51 }
52 bool arrivable(int a,int b)
53 {
54     return p[a].arrival+manhattan(p[a].x1,p[a].y1,p[b].x0,p[b].y0)<p[b].departure;
55 }
56 int main()
57 {
58     int n;
59     scanf("%d",&n);
60     while(n--)
61     {
62         scanf("%d",&nx);
63         ny=nx;
64         int i,a,b,x0,y0,x1,y1;
65         for(i=0;i<nx;i++)
66         {
67             scanf("%d:%d%d%d%d%d",&a,&b,&x0,&y0,&x1,&y1);
68             p[i].departure=format(a,b);
69             p[i].arrival=p[i].departure+manhattan(x0,y0,x1,y1);
70             p[i].x0=x0;
71             p[i].y0=y0;
72             p[i].x1=x1;
73             p[i].y1=y1;
74         }
75         int j;
76         for(i=0;i<nx;i++)
77         {
78             for(j=0;j<ny;j++)
79                 matrix[i][j]=false;
80         }
81         for(i=0;i<nx;i++)
82         {
83             for(j=0;j<ny;j++)
84             {
85                 if(arrivable(i,j))
86                     matrix[i][j]=true;
87             }
88         }
89         printf("%d\n",nx-Hungary());
90     }
91     return 0;
92 }

以上代码在C++编译器下提交AC,但在GNU C++下提交就CE。提示是

1 F:\temp\11348191.4260\Main.cc: In function 'int manhattan(int, int, int, int)':
2 F:\temp\11348191.4260\Main.cc:50: error: 'abs' was not declared in this scope

,什么回事。

转载于:https://www.cnblogs.com/ZShogg/archive/2013/03/14/2959558.html

相关文章:

  • Android实战技巧:深入解析AsyncTask
  • yum 及手动编译rpm包
  • BI笔记之---增量方式处理多维数据集
  • 一号通
  • 异常以及异常处理框架探析
  • node.js 模块找不到的问题
  • iis7.5中做 handler配置
  • 多啦A梦里的人物名字各是谁啊?
  • 实习基地管理程序
  • 日期相关类
  • RDP协议组件X.224在协议流中发现一个错误并且中断了客户端连接
  • 查找DetailsView1数据控件中的数据
  • Windows右键单字符文件夹 explorer崩溃解决方法
  • Unity商店下载的文件保存路径?
  • hessian性能估算
  • 【Linux系统编程】快速查找errno错误码信息
  • gops —— Go 程序诊断分析工具
  • Js基础知识(四) - js运行原理与机制
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • 基于webpack 的 vue 多页架构
  • 聊聊sentinel的DegradeSlot
  • 面试遇到的一些题
  • 数据结构java版之冒泡排序及优化
  • 原生 js 实现移动端 Touch 滑动反弹
  • 2017年360最后一道编程题
  • linux 淘宝开源监控工具tsar
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #include到底该写在哪
  • #NOIP 2014#Day.2 T3 解方程
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (十三)Flask之特殊装饰器详解
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)鸿鹄云架构一服务注册中心
  • (转)Google的Objective-C编码规范
  • (转)linux下的时间函数使用
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • . Flume面试题
  • ./configure、make、make install 命令
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net MySql
  • .NET4.0并行计算技术基础(1)
  • .考试倒计时43天!来提分啦!
  • ?.的用法
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [android] 天气app布局练习
  • [Angular 基础] - 数据绑定(databinding)
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C/C++] -- 二叉树