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的旅行路线的更多相关文章

  1. 洛谷P1027 Car的旅行路线

    洛谷P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速 ...

  2. 洛谷 P1027 Car的旅行路线

    P1027 Car的旅行路线 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路 ...

  3. 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...

  4. [最短路][部分转]P1027 Car的旅行路线

    题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位 ...

  5. luogu P1027 Car的旅行路线

    题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位 ...

  6. [NOIP2001] 提高组 洛谷P1027 Car的旅行路线

    题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个 矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单 ...

  7. 洛谷——P1027 Car的旅行路线

    https://www.luogu.org/problem/show?pid=1027#sub 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于 ...

  8. AC日记——Car的旅行路线 洛谷 P1027

    Car的旅行路线 思路: 这题不难,就是有点恶心: 而且,请认真读题目(就是题目卡死劳资): 来,上代码: #include <cmath> #include <cstdio> ...

  9. Car的旅行路线 luogu P1027 (Floyd玄学Bug有点毒瘤)

    luogu题目传送门! Car的旅行路线  问题描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 ...

随机推荐

  1. RHEL 6.5---SVN服务实现过程

    主机名 IP地址  master 192.168.30.130 slave 192.168.30.131 安装 [root@master ~]# yum install -y subversion h ...

  2. RedHat改yum源免费使用CentOS源

    linux默认是安装了yum软件的,但是由于激活认证的原因让redhat无法直接进行yum安装一些软件 如果我们需要在redhat下直接yum安装软件,我们只用把yum的源修改成CentOS的就好了, ...

  3. 【学习笔记】深入理解js原型和闭包(11)——执行上下文栈

    继续上文的内容. 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境.当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境.处于活动状态的执行 ...

  4. 批量部署Hadoop集群环境(1)

    批量部署Hadoop集群环境(1) 1. 项目简介: 前言:云火的一塌糊涂,加上自大二就跟随一位教授做大数据项目,所以很早就产生了兴趣,随着知识的积累,虚拟机已经不能满足了,这次在服务器上以生产环境来 ...

  5. RPC(Remote Procedure Call Protocol)远程过程调用协议

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在 ...

  6. 自定义Jquery 下拉框

    (function ($){ 'use strict'; var g_id = 0; var g_open_id = []; $.fn.select3 = function () { var _id ...

  7. 原创:mysql下载 实战 最强最全的无脑白痴版 给小白的爱

  8. Android(java)学习笔记167:横竖屏切换时Activity的生命周期

    1.横竖屏切换的生命周期     默认情况下横竖屏切换,先销毁再创建 2.有的时候,默认情况下的横竖屏切换(先销毁再创建),对应用户体验是不好的,比如是手机游戏横竖屏切换对游戏体验非常不好,下面两种方 ...

  9. vue之placeholder中引用字体图标

    先说一下问题:在placeholder中想使用字体图标,结果渲染不正确,代码如图 效果如图 在网上get到了解决方法: 在VUE组件中,给placeholder添加图标,需要注意以下几点: 1.不要给 ...

  10. Eclipse启动的时候提示:Failed to load JavaHL Library

    版本信息: Eclipse Project Release Notes Release 4.7.3 启动提示: Subclipse talks to Subversion via a Java API ...