Taxi Cab Scheme HDU - 1350
时间:2021-07-15
本文章向大家介绍Taxi Cab Scheme HDU - 1350,主要包括Taxi Cab Scheme HDU - 1350使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原题链接
考察:二分图匹配
思路:
最小路径点覆盖.每个任务的接连完成构成一条简单路径,求最少的简单路径覆盖所有的任务点.
Code
#include <iostream>
#include <cstring>
using namespace std;
const int N = 510;
typedef pair<int,int> PII;
struct Node{
int t,sx,sy,x,y;
}node[N];
int n,h[N],idx,match[N];
bool st[N];
struct Road{
int to,ne;
}road[N*N>>1];
bool dfs(int u)
{
for(int i=h[u];~i;i=road[i].ne)
{
int v = road[i].to;
if(st[v]) continue;
st[v] = 1;
if(!match[v]||dfs(match[v]))
{
match[v] = u;
return 1;
}
}
return 0;
}
void add(int a,int b)
{
road[idx].to = b,road[idx].ne = h[a],h[a] = idx++;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
idx = 0;
for(int i=1;i<=n;i++)
{
h[i] = -1,match[i] = 0;
int hh,mm,sx,sy,x,y;
scanf("%d:%d%d%d%d%d",&hh,&mm,&node[i].sx,&node[i].sy,&node[i].x,&node[i].y);
int t = hh*60+mm;
node[i].t = t;
}
for(int i=1;i<=n;i++)
{
int cost = abs(node[i].sx-node[i].x)+abs(node[i].sy-node[i].y);
for(int j=i+1;j<=n;j++)
{
int c = abs(node[i].x-node[j].sx)+abs(node[i].y-node[j].sy);
if(node[i].t+c+cost<node[j].t) add(i,j);
}
}
int res = 0;
for(int i=1;i<=n;i++)
{
memset(st,0,sizeof st);
if(dfs(i)) ++res;
}
printf("%d\n",n-res);
}
return 0;
}
原文地址:https://www.cnblogs.com/newblg/p/15013914.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++ 实现可变参数
- C++ 单例模式
- c++ 日志类 线程安全+缓存
- C++ 实现通过类名来进行实例化(反射机制?)
- Flutter基础widgets教程-ExpansionPanel篇
- muduo TcpServer粗略过程
- muduo 超时重连
- EventLoop,TcpClient,TcpServer 中的生命周期
- functional 和 bind 用法
- Flutter基础widgets教程-FittedBox篇
- muduo Dispatcher消息分发器 通过多态和模板进行向上类型转换
- Flutter基础widgets教程-FloatingActionButton篇
- VBS基础篇 - 对象(3) - FileSystemObject对象
- vbs 实现文件夹拷贝--采用堆栈不递归
- vbs - 一个简单的栈 -- 只能存储类对象