[luoguP1027] Car的旅行路线(Floyd)
建图麻烦,建完图搞一遍Floyd就好了。
——代码
#include <iostream>
#include <cstdio>
#include <cmath> using namespace std; int n, s, a, b;
int t, x[][], y[][], T[];
double map[][], ans; inline int square(int ax)
{
return ax * ax;
} inline int dis(int ax, int ay, int bx, int by)
{
return square(ax - bx) + square(ay - by);
} int main()
{
int i, j, k;
scanf("%d", &n);
while(n--)
{
scanf("%d %d %d %d", &s, &t, &a, &b);
for(i = ; i < * s; i++)
for(j = ; j < * s; j++)
map[i][j] = ;
ans = ;
for(i = ; i < s; i++)
{
scanf("%d %d %d %d %d %d %d", &x[i][], &y[i][], &x[i][], &y[i][], &x[i][], &y[i][], &T[i]);
if(dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][])
&& dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][]))
{
x[i][] = x[i][] + x[i][] - x[i][];
y[i][] = y[i][] + y[i][] - y[i][];
}
else if(dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][])
&& dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][]))
{
x[i][] = x[i][] + x[i][] - x[i][];
y[i][] = y[i][] + y[i][] - y[i][];
}
else if(dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][])
&& dis(x[i][], y[i][], x[i][], y[i][]) > dis(x[i][], y[i][], x[i][], y[i][]))
{
x[i][] = x[i][] + x[i][] - x[i][];
y[i][] = y[i][] + y[i][] - y[i][];
}
map[ * i][ * i + ] = map[ * i + ][ * i] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
map[ * i][ * i + ] = map[ * i + ][ * i] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
map[ * i][ * i + ] = map[ * i + ][ * i] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
map[ * i + ][ * i + ] = map[ * i + ][ * i + ] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
map[ * i + ][ * i + ] = map[ * i + ][ * i + ] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
map[ * i + ][ * i + ] = map[ * i + ][ * i + ] = sqrt(dis(x[i][], y[i][], x[i][], y[i][])) * T[i];
for(j = ; j < * i; j++)
for(k = * i; k < * i + ; k++)
map[k][j] = map[j][k] = sqrt(dis(x[j / ][j % + ], y[j / ][j % + ], x[k / ][k % + ], y[k / ][k % + ])) * t;
}
for(i = ; i < * s; i++) map[i][i] = ;
for(k = ; k < * s; k++)
for(i = ; i < * s; i++)
for(j = ; j < * s; j++)
map[i][j] = min(map[i][j], map[i][k] + map[k][j]);
for(i = * a - ; i < * a; i++)
for(j = * b - ; j < * b; j++)
ans = min(ans, map[i][j]);
printf("%.1f\n", ans);
}
return ;
}
[luoguP1027] Car的旅行路线(Floyd)的更多相关文章
- Car的旅行路线(Floyd+模拟)
题目地址 贼鸡儿猥琐的一道题 好在数据不毒瘤,而且Floyd就OK了. 这道题的难点在于 建图,也很考验模拟能力,需要十分的有耐心. 建图 题目中告诉了我们一个矩形的三个点 我们在平面直角坐标系中随便 ...
- Luogu-P1027 Car的旅行路线 已知三点确定矩形 + 最短路
传送门:https://www.luogu.org/problemnew/show/P1027 题意: 图中有n个城市,每个城市有4个机场在矩形的四个顶点上.一个城市间的机场可以通过高铁通达,不同城市 ...
- Car的旅行路线 luogu P1027 (Floyd玄学Bug有点毒瘤)
luogu题目传送门! Car的旅行路线 问题描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 ...
- NOIP2001 Car的旅行路线
题四 Car的旅行路线(30分) 问题描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速 ...
- 洛谷P1027 Car的旅行路线
洛谷P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速 ...
- 洛谷 P1027 Car的旅行路线
P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路 ...
- [NOIP2001提高组]CODEVS1014 Car的旅行路线(最短路)
最短路,这个不难想,但是要为它加边就有点麻烦..还好写完就过了(虽然WA了一次,因为我调试用的输出没删了..),不然实在是觉得挺难调的.. ------------------------------ ...
- GDOI2015小Z的旅行路线
GDOI2015小Z的旅行路线 题意: \(n\)个点的无根树,边上有权值. \(q\)个询问\(s\)和\(s\),问从\(s\)出发,找一条最长路(不经过重复点),保证路径上所有边边权不超过\(x ...
- 【Foreign】旅行路线 [倍增]
旅行路线 Time Limit: 20 Sec Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 3 2 ...
随机推荐
- RAID基础
磁盘类型 类型 IDE Integrated Drive Electronics SATA Srial ATA SCSI Small Computer System Interface FC Fibe ...
- Asp.Net MVC中捕捉错误路由并设置默认Not Found页面。
在Global中写一个Application_Error捕捉错误路由并重定向到Not Found页面.这里是全局性抓取错误路由,此处还可以写由错误路由导致访问失败的日志记录. protected vo ...
- 【学习笔记】深入理解js原型和闭包(17)——补this
本文对<深入理解js原型和闭包(10)——this>一篇进行补充,原文链接:https://www.cnblogs.com/lauzhishuai/p/10078307.html 原文中, ...
- 第一次向nodeclub提交修改
今天第一次向nodeclub提交了两个修改,两个修改都是涉及部分浏览器的兼容性的. Manager很快合并了我的修改,好开森.晚上又重新回炉了一下git的日常操作,将git部分操作整理了一下写于此博. ...
- Chomp游戏(必胜策略分析)
游戏简介 Chomp是一个双人游戏,有m x n块曲奇饼排成一个矩形格状,称作棋盘. ----两个玩家轮流自选一块还剩下的曲奇饼,而且还要把它右边和下边所有的曲奇饼都取走(如果存在) ----先吃到左 ...
- MyBatis基本运行环境
MyBatis基本运行环境 1. 创建项目 2.拷贝jar加入到项目中build path jar包 3.创建数据库的表及数据添加 USE [mybatis] CREATE TABLE [dbo].[ ...
- 微信小程序工具真机调试提示page "xxx/xxx/xxx" is not found
解决方法: pages对象添加该页面
- Swift详解之NSPredicate
言:谓词在集合过滤以及CoreData中有着广泛的应用.本文以Playground上的Swift代码为例,讲解如何使用NSPredicate. 准备工作 先在Playground上建立一个数组,为后文 ...
- 条款16:成对使用new和delete时要采取相同形式
NOTE: 1.如果你在new表达式中使用[],必须在相应的delete表达式中也使用[].如果你在new表达式中不使用[],一定不要在相应的delete表达式中使用[].
- 第五章:C++程序的结构
主要内容: 1.作用域与可见性 2.对象的生存期 3.数据与函数 4.静态成员 5.共享数据的保护 6.友元 7.编译预处理命令 8.多文件结构和工程 作用域:函数原型作用域.块作用域.类作用域.文件 ...