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旅游.她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 ...
随机推荐
- h5-19-文件操作-文件域
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- double发生精度丢失的解决办法
发生精度丢失的原因: 个人理解:机器在运行时,使用2进制形式的计数方式,而我们日常生活中的计算是10进制的,对于整数的加减乘除,double还能适用,但是对于有小数的,则容易发生精度丢失,即用2进制表 ...
- oracle 查看未关闭连接
查看连接状态.问题电脑等信息: select sid,serial#,username,program,machine,status from v$session; 2.查看sql; select ...
- sublime的几款实用插件
1.CSScomb 用于调整css属性的书写顺序 2.Emmet 缩写神器 3.HTML/CSS/JS Prettify 代码格式化 4.Trimmer 去空格去空行 5.Alignment 代码对齐 ...
- TextView、EditText
1.TextView 显示文本信息 常用属性: layout_width/height 控件的宽/高 width/heigth 文本区域的宽/高 text 显示的文本 textSi ...
- pageHelper分页插件失效问题
在bootstrap中引用pageHelper进行页面分页<dependency><groupId>com.github.pagehelper</groupId>& ...
- Spring-bean(一)
配置形式:基于xml文件的方式:基于注解的方式 Bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean 依赖注入的方式:属性注入,构造器注入 ...
- Android内存泄露(全自动篇)
写了可执行文件启动器Launcher.jar及一些批处理,通过它们就可以自动的以一定的时间间隔提取Hprof和进程的内存信息: 一.需要的库 可执行文件启动器:lib\Launcher.jar 注:关 ...
- 获取当前目录 文件输出html 网页查看
@echo off setlocal set LISTFILE=list.html echo MAKING LISTFILE … (PLEASE WAIT) echo ^<!doctype ht ...
- TCP/IP详解之IP协议
1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制 ...