P1027 car的旅行路线
car的旅行路线
这个题关键就是
如何把每个点表示出来,其实求出四个点的坐标后,只需要把这些点连接起来,用一遍folyed求出最短路径就好了。
代码:
#include<cmath>
#include<cstdio>
int x[],y[];//x表示横坐标,y表示纵坐标
int ti[];//在第i个城市中铁路单位里程价格
int n,s,tt,a,b;//tt表示航线单位里程价格
double d[][];//i到j的长度(花费)
void doit(int t1,int t2){//计算t1到t2的花费
d[t1][t2]=sqrt((x[t1]-x[t2])*(x[t1]-x[t2])
+(y[t1]-y[t2])*(y[t1]-y[t2]));//求t1到t2的长度
if (((t1-)/)==((t2-)/)){//判断t1,t2是否在同一个城市内
d[t1][t2]=d[t1][t2]*ti[(t1-)/+];//计算花费
}else
d[t1][t2]=d[t1][t2]*tt;
d[t2][t1]=d[t1][t2];//对称
return;//结束
}
int find(int t1,int t2,int t3){//找直角三角形斜边
//如果一边长度大于任意两边返回此边对着的点
if((d[t1][t2]>d[t2][t3])&&(d[t1][t2]>d[t3][t1])) return t3;
//t1t2对应的点为t3
if((d[t2][t3]>d[t1][t2])&&(d[t2][t3]>d[t3][t1])) return t1;
//t2t3对应的点为t1
if((d[t3][t1]>d[t2][t3])&&(d[t3][t1]>d[t1][t2])) return t2;
//t1t3对应的点为t2
}
void doit2(int t1,int t2,int t3){
doit(t1,t2);//t1到t2的花费(比在同一城市)
doit(t2,t3);//t2到t3的花费(必在同一城市)
doit(t3,t1);//t3到t1的花费(必在同一城市)
int haha=find(t1,t2,t3);//找此直角三角形的斜边
//而在平行四边形中
//一条边的两个顶点的横(或纵)坐标的差值
//等于其对边两个顶点的横(或纵)坐标的差值
if(haha==t1){//看斜边对着的点为哪个,并求出第4个点的坐标
x[t3+]=x[t3]+x[t2]-x[t1];
y[t3+]=y[t3]+y[t2]-y[t1];
}
else if(haha==t2){
x[t3+]=x[t3]+x[t1]-x[t2];
y[t3+]=y[t3]+y[t1]-y[t2];
}
else if(haha==t3){
x[t3+]=x[t1]+x[t2]-x[t3];
y[t3+]=y[t1]+y[t2]-y[t3];
}
}
int main(){
scanf("%d",&n);
for(;n>=;n--){//循环运行n次
scanf("%d %d %d %d",&s,&tt,&a,&b);
//S城市数,t飞机单价,A,B序号
int i,j,k;
for(i=;i<=;i++)//初始化
for(j=;j<=;j++)
d[i][j]=;
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-],
&ti[i]);
doit2(*i-,*i-,*i-);
}
for(i=;i<=*s;i++)
for(j=;j<=*s;j++)
doit(i,j);//计算i到j的花费
for(k=;k<=*s;k++)
for(i=;i<=*s;i++)
for(j=;j<=*s;j++)
if(d[k][j]+d[i][k]<d[i][j])
d[i][j]=d[k][j]+d[i][k];//Floyed
double ans=200000000.0;
for(i=*a-;i<=*a;i++)
for(j=*b-;j<=*b;j++)
if(d[i][j]<ans)
ans=d[i][j];//更新最小值
printf("%.1lf\n",ans);//输出,并保留一位小数
}
return ;
}
P1027 car的旅行路线的更多相关文章
- 洛谷P1027 Car的旅行路线
洛谷P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速 ...
- 洛谷 P1027 Car的旅行路线
P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路 ...
- 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...
- [最短路][部分转]P1027 Car的旅行路线
题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位 ...
- luogu P1027 Car的旅行路线
题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位 ...
- [NOIP2001] 提高组 洛谷P1027 Car的旅行路线
题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个 矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单 ...
- 洛谷——P1027 Car的旅行路线
https://www.luogu.org/problem/show?pid=1027#sub 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于 ...
- AC日记——Car的旅行路线 洛谷 P1027
Car的旅行路线 思路: 这题不难,就是有点恶心: 而且,请认真读题目(就是题目卡死劳资): 来,上代码: #include <cmath> #include <cstdio> ...
- Car的旅行路线 luogu P1027 (Floyd玄学Bug有点毒瘤)
luogu题目传送门! Car的旅行路线 问题描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 ...
随机推荐
- vue项目node升级后,node-saas报错解决办法
ERROR in ./node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.j ...
- 504 Base 7 七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出.示例 1:输入: 100输出: "202" 示例 2:输入: -7输出: "-10"注意: 输入范围是 [- ...
- Java 学习列表
这是从450家企业的招聘信息中统计而来,相对来说还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的.
- FPGA开发中的脚本语言
多数FPGA开发者都习惯图形化界面(GUI).GUI方式简单易学,为小项目提供了一键式流程.然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率.因为GUI工具不能对整个开发过程提 ...
- java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码
java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码 作者:Vashon package com.ywx.batchrename; import java.io.File; import ...
- 秦晓波著的编写高质量代码-改善Java程序的151个建议一书中的线程解释错误.
位置: 建议127: Lock与synchronized是不一样的 首先在概念上纠正这一篇内容: 援引Java源码中关于ReentrantLock的开篇说明: * A reentrant mutual ...
- 写给技术lead的招聘指南
工作这么久,面试过的工程师不下两三百人.大部份招到的人都比靠谱当然也有失败的例子.把亲身经历总结如下: 1. 什么人一定不能招: 理解能力差: 对你提出的问题,答不对题,重复提问.面试官可以在面试当中 ...
- Javaweb学习笔记9—过滤器
今天来讲javaweb的第9阶段学习. 过滤器,我在本次的思维导图中将过滤器和监听器放在一起总结了,监听器比较简单就不单独写了. 老规矩,首先先用一张思维导图来展现今天的博客内容. ...
- jQuery ajax参数后台获取不到的问题
<script type="text/javascript"> init(); var alldate = {a : "0",b:"1&q ...
- 解决jenkins插件列表为空的问题
可能是由于Jenkins的更新网站被QIANG,因此,请使用 http://mirror.xmission.com/jenkins/updates/update-center.json 来进行更新