Java实现 洛谷 Car的旅行路线


输入输出样例
输入样例#1:
1
3 10 1 3
1 1 1 3 3 1 30
2 5 7 4 5 2 1
8 6 8 8 11 6 3
输出样例#1:
47.5
import java.util.Scanner;
//洛谷
public class car的旅行路线 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int cout=in.nextInt();
for (int ss = 0; ss <cout; ss++) {
int s = in.nextInt();//s表示城市的个数
int t = in.nextInt();//t代表飞机的单价
int A = in.nextInt();
int B = in.nextInt();
City []cities = new City[s];
for(int i = 0; i < s; i++){
int x1 = in.nextInt();
int y1 = in.nextInt();
int x2 = in.nextInt();
int y2 = in.nextInt();
int x3 = in.nextInt();
int y3 = in.nextInt();
int price = in.nextInt();
City city = new City(x1, y1, x2, y2, x3, y3, price);
cities[i] = city;
}
double [][]dp = new double[s*4][s*4];
for(int i = 0; i < s*4; i++){
for( int j = 0; j < s*4 ;j++){
if(i/4==j/4){
dp[i][j] = dist(cities[i/4].x[i%4],cities[i/4].y[i%4],cities[j/4].x[j%4],cities[j/4].y[j%4])*cities[i/4].price;
}else{
dp[i][j] = dist(cities[i/4].x[i%4],cities[i/4].y[i%4],cities[j/4].x[j%4],cities[j/4].y[j%4])*t;
}
//System.out.println(i+" "+j+" "+dp[i][j]);
}
}
for(int i = 0; i < 4*s;i++){
for(int j = 0; j < 4*s; j++){
for(int k = 0; k < 4*s; k++){
dp[j][k] = Math.min(dp[j][k], dp[j][i]+dp[i][k]);
//System.out.println(j+" "+k+" "+dp[j][k]);
}
}
}
double min = dp[(A-1)*4][(B-1)*4];
//System.out.println(min);
for(int i = (A-1)*4; i <A*4; i++){
for(int j = (B-1)*4; j <B*4; j++){
if(min>dp[i][j]){
min = dp[i][j];
//System.out.println(i+" "+j+" "+min);
}
}
}
System.out.printf("%.1f", min);
}
}
private static double dist(int x12, int y12, int x22, int y22) {
// TODO Auto-generated method stub
return Math.sqrt((x22-x12)*(x22-x12)+(y22-y12)*(y22-y12));
}
}
class City{
int []x = new int[4];
int []y = new int[4];
int price;
public City(int x1, int y1, int x2, int y2, int x3, int y3, int price) {
super();
x[0] = x1;
y[0] = y1;
x[1] = x2;
y[1] = y2;
x[2] = x3;
y[2] = y3;
double t12 = dist(x1,y1,x2,y2);
double t13 = dist(x1,y1,x3,y3);
double t23 = dist(x2,y2,x3,y3);
if(Math.abs(t12*t12+t13*t13-t23*t23)<0.000001){
x[3] = x2+x3-x1;
y[3] = y2+y3-y1;
}
if(Math.abs(t12*t12+t23*t23-t13*t13)<0.000001){
x[3] = x1+x3-x2;
y[3] = y1+y3-y2;
}
if(Math.abs(t13*t13+t23*t23-t12*t12)<0.000001){
x[3] = x1+x2-x3;
y[3] = y1+y2-y3;
}
this.price = price;
}
private double dist(int x12, int y12, int x22, int y22) {
// TODO Auto-generated method stub
return Math.sqrt((x22-x12)*(x22-x12)+(y22-y12)*(y22-y12));
}
}
Java实现 洛谷 Car的旅行路线的更多相关文章
- 洛谷 P4478 [BJWC2018]上学路线
洛谷 P4478 [BJWC2018]上学路线 原题 神仙题orz,竟然没有1A....容斥+卢卡斯+crt?? 首先用容斥做,记\(f[i][0/1]\)表示到i号点经过了奇数/偶数个点的方案数,因 ...
- 【模板】矩阵快速幂 洛谷P2233 [HNOI2002]公交车路线
P2233 [HNOI2002]公交车路线 题目背景 在长沙城新建的环城公路上一共有8个公交站,分别为A.B.C.D.E.F.G.H.公共汽车只能够在相邻的两个公交站之间运行,因此你从某一个公交站到另 ...
- Java实现 洛谷 P1738 洛谷的文件夹
题目描述 kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现. 洛谷的网页端,有很多文件夹,文件夹还套着文件夹. 例如:/luogu/application/c ...
- Java实现洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- [NOIP2012] 提高组 洛谷P1081 开车旅行
题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...
- 洛谷P2502[HAOI2006]旅行
题目: Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N个景点(编号为1,2,3,-,N),这些景点被M条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路.也许 ...
- 洛谷 P1081 开车旅行(70)
P1081 开车旅行 题目描述 小AA 和小BB 决定利用假期外出旅行,他们将想去的城市从 11到 NN 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 ii的海 ...
- java实现洛谷P3376【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含三个正整数u ...
- 洛谷 P3313 [SDOI2014]旅行 解题报告
P3313 [SDOI2014]旅行 题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教 ...
随机推荐
- LeetCode 102. 二叉树的层序遍历 | Python
102. 二叉树的层序遍历 题目来源:https://leetcode-cn.com/problems/binary-tree-level-order-traversal 题目 给你一个二叉树,请你返 ...
- 【漫画】互斥锁ReentrantLock不好用?试试读写锁ReadWriteLock
ReentrantLock完美实现了互斥,完美解决了并发问题.但是却意外发现它对于读多写少的场景效率实在不行.此时ReentrantReadWriteLock来救场了!一种适用于读多写少场景的锁,可以 ...
- web2
0x01 <?php $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; funct ...
- JSP+Servlet+JDBC+mysql实现的个人日记本系统
项目简介 项目来源于:https://gitee.com/wishwzp/Diary 本系统基于JSP+Servlet+Mysql 一个基于JSP+Servlet+Jdbc的个人日记本系统.涉及技术少 ...
- Vue+Vuex实现自动登录 升级版
Vue+Vuex实现自动登录 升级版 之前实现的版本在这里:Vue+Vuex实现自动登录 在之前实现的版本中,如果你进行测试,可以看到在浏览器的local Storage中,确实里面有了我 ...
- Spring Boot集成H2数据库
需求 平时学习的时候,涉及到一些连接数据库相关的操作,经常需要初始化本地数据库,比如装个MySQL,初始化一些脚本,比较麻烦,H2是内存数据库,Spring Boot可以在应用启动的时候对H2数据库初 ...
- ambari hdp ssh链接错误
错误信息: ERROR 2019-09-05 10:29:05,700 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:57 ...
- 安装OPENCTI
应业务需求,需要安装OPENCTI.很无奈的配了一下午. 首先是安装需求: 1. Ubuntu 2. Docker version 19.03.5 + docker-compose version 1 ...
- 王艳 201771010127《面向对象程序设计(java)》第七周学习总结
1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法与常用API: (4)掌握枚举类使用方法: (5)结合 ...
- 【MySQL】索引的本质(B+Tree)解析
索引是帮助MySQL高效获取数据的排好序的数据结构. 索引数据结构 二叉树 红黑树 Hash表 B-Tree MySQL所使用为B+Tree (B-Tree变种) 非叶子节点不存储data,只存储索引 ...