大家可以看一下这个,蓝桥杯官网的这道题是有问题的

Car的旅行路线

算法训练 Car的旅行路线

时间限制:1.0s 内存限制:256.0MB

提交此题 锦囊1 锦囊2 查看参考代码

问题描述

  又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一 条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。

  那么Car应如何安排到城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。

  找出一条从城市A到B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。

输入格式

  的第一行有四个正整数s,t,A,B。

  S表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1<=A,B<=S)。

  接下来有S行,其中第I行均有7个正整数xi1,yi1,xi2,yi2,xi3,yi3,Ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第I个城市中任意三个机场的坐标,T I为第I个城市高速铁路单位里程的价格。

输出格式

  共有n行,每行一个数据对应测试数据,保留一位小数。

样例输入

1

1 10 1 3

1 1 1 3 3 1 30

2 5 7 4 5 2 1

8 6 8 8 11 6 3

样例输出

47.55

数据规模和约定

  0<S<=100,

  1. import java.util.Scanner;
  2. public class Car的旅行路线 {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. Scanner in = new Scanner(System.in);
  6. int s = in.nextInt();//s表示城市的个数
  7. int t = in.nextInt();//t代表飞机的单价
  8. int A = in.nextInt();
  9. int B = in.nextInt();
  10. City []cities = new City[s];
  11. for(int i = 0; i < s; i++){
  12. int x1 = in.nextInt();
  13. int y1 = in.nextInt();
  14. int x2 = in.nextInt();
  15. int y2 = in.nextInt();
  16. int x3 = in.nextInt();
  17. int y3 = in.nextInt();
  18. int price = in.nextInt();
  19. City city = new City(x1, y1, x2, y2, x3, y3, price);
  20. cities[i] = city;
  21. }
  22. double [][]dp = new double[s*4][s*4];
  23. for(int i = 0; i < s*4; i++){
  24. for( int j = 0; j < s*4 ;j++){
  25. if(i/4==j/4){
  26. 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;
  27. }else{
  28. 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;
  29. }
  30. //System.out.println(i+" "+j+" "+dp[i][j]);
  31. }
  32. }
  33. for(int i = 0; i < 4*s;i++){
  34. for(int j = 0; j < 4*s; j++){
  35. for(int k = 0; k < 4*s; k++){
  36. dp[j][k] = Math.min(dp[j][k], dp[j][i]+dp[i][k]);
  37. //System.out.println(j+" "+k+" "+dp[j][k]);
  38. }
  39. }
  40. }
  41. double min = dp[(A-1)*4][(B-1)*4];
  42. //System.out.println(min);
  43. for(int i = (A-1)*4; i <A*4; i++){
  44. for(int j = (B-1)*4; j <B*4; j++){
  45. if(min>dp[i][j]){
  46. min = dp[i][j];
  47. //System.out.println(i+" "+j+" "+min);
  48. }
  49. }
  50. }
  51. System.out.printf("%.1f", min);
  52. }
  53. private static double dist(int x12, int y12, int x22, int y22) {
  54. // TODO Auto-generated method stub
  55. return Math.sqrt((x22-x12)*(x22-x12)+(y22-y12)*(y22-y12));
  56. }
  57. }
  58. class City{
  59. int []x = new int[4];
  60. int []y = new int[4];
  61. int price;
  62. public City(int x1, int y1, int x2, int y2, int x3, int y3, int price) {
  63. super();
  64. x[0] = x1;
  65. y[0] = y1;
  66. x[1] = x2;
  67. y[1] = y2;
  68. x[2] = x3;
  69. y[2] = y3;
  70. double t12 = dist(x1,y1,x2,y2);
  71. double t13 = dist(x1,y1,x3,y3);
  72. double t23 = dist(x2,y2,x3,y3);
  73. if(Math.abs(t12*t12+t13*t13-t23*t23)<0.000001){
  74. x[3] = x2+x3-x1;
  75. y[3] = y2+y3-y1;
  76. }
  77. if(Math.abs(t12*t12+t23*t23-t13*t13)<0.000001){
  78. x[3] = x1+x3-x2;
  79. y[3] = y1+y3-y2;
  80. }
  81. if(Math.abs(t13*t13+t23*t23-t12*t12)<0.000001){
  82. x[3] = x1+x2-x3;
  83. y[3] = y1+y2-y3;
  84. }
  85. this.price = price;
  86. }
  87. private double dist(int x12, int y12, int x22, int y22) {
  88. // TODO Auto-generated method stub
  89. return Math.sqrt((x22-x12)*(x22-x12)+(y22-y12)*(y22-y12));
  90. }
  91. }

Java实现 蓝桥杯VIP 算法训练 Car的旅行路线的更多相关文章

  1. Java实现蓝桥杯VIP 算法训练 找公倍数

    问题描述 这里写问题描述. 打印出1-1000所有11和17的公倍数. 样例输入 一个满足题目要求的输入范例. 样例输出 与上面的样例输入对应的输出. 这道题其实没有什么可写的,但是为了让读者更方便的 ...

  2. Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块 资源限制 时间限制:200ms 内存限制:8.0MB 问题描述 连通分块 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 接下来m行,每行2 ...

  3. Java实现 蓝桥杯VIP 算法训练 无权最长链

    试题 算法训练 无权最长链 问题描述 给定一个n节点m边的无圈且连通的图,求直径 输入格式 第一行两个数字n,m 接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式 要求用户的输出满足的格 ...

  4. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  5. Java实现 蓝桥杯VIP 算法训练 最大质因数(暴力)

    试题 算法训练 最大质因数 问题描述 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N. 接下来的N行,每行一个整数A_i,表示给出的那N个数字. 输出格式 第一行:一个整数 ...

  6. Java实现 蓝桥杯VIP 算法训练 与1连通的点的个数(并查集)

    试题 算法训练 与1连通的点的个数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 没有问题描述. 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 ...

  7. Java实现 蓝桥杯VIP 算法训练 非递归(暴力)

    试题 算法训练 非递归 问题描述 当x>1时,Hermite多项式的定义见第二版教材125页.用户输入x和n,试编写"非递归"函数,输出对应的Hermite多项式的值.其中x ...

  8. Java实现 蓝桥杯VIP 算法训练 步与血(递推 || DFS)

    试题 算法训练 步与血 问题描述 有n*n的方格,其中有m个障碍,第i个障碍会消耗你p[i]点血.初始你有C点血,你需要从(1,1)到(n,n),并保证血量大于0,求最小步数. 输入格式 第一行3个整 ...

  9. Java实现 蓝桥杯VIP 算法训练 -2进制(暴力)

    试题 算法训练 -2进制 问题描述 给出1个十进制整数N,计算出它的-2进制表示. 输入格式 第一行:一个整数N,表示要转换的十进制数. 输出格式 第一行:N的-2进制表示. 样例输入 -13 样例输 ...

随机推荐

  1. 预测算法:基于UCF的电影推荐算法

    #基于用户的推荐类算法 from math import sqrt #计算两个person的欧几里德距离 def sim_distance(prefs,person1,person2): si = { ...

  2. mysql计算

    select @csum := 0;select create_time,merchant_id,award as 奖励,total_count as 数量,(@csum := @csum + awa ...

  3. 对background: url("~assets/img/common/collect.svg") 0 0/14px 14px 的理解

    需求:给收藏数字前面通过::before伪元素添加图标 相关代码: .goods-info .collect { position: relative; } .goods-info .collect: ...

  4. 笨办法学习python-ex41源码加自己注释

    #!/user/bin/env python #-*-coding:utf-8 -*- #Author: qinjiaxi import random from urllib import urlop ...

  5. 函数的不同调用方式决定了this的指向不同

    一.函数的不同调用方式决定了this的指向不同,一般指向调用者 1.普通函数   this指向window的调用者        function fn(){            console.l ...

  6. 7.1 Go interface

    7.1 Go interface 雨痕-Go语言笔记 接口采用了duck type方式,在程序设计中是动态类型的一种风格 `当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被 ...

  7. JQuery 高级

    来源于传智播客老师发的笔记 今日内容: 1. JQuery 高级 1. 动画 2. 遍历 3. 事件绑定 4. 案例 5. 插件 JQuery 高级 1. 动画 1. 三种方式显示和隐藏元素 1. 默 ...

  8. mysql小白系列_06 备份与恢复

    1.使用mydumper工具全库备份. 1)源码编译安装 2)全库备份 2.误操作truncate table gyj_t1;利用mysqldump的备份和binlog日志对表gyj_t1做完全恢复. ...

  9. 07.django日志配置

    https://docs.djangoproject.com/en/3.0/topics/logging/ https://yiyibooks.cn/xx/python_352/library/log ...

  10. SVN创建分支的相关操作

    目的是为了在项目中进行相应的功能操作的时候避免项目的报错还能进行还原 1.在相应的位置创建分支 项目过大的只在 功能的位置 进行创建分支 Angular的src 不要在其下面进行创建分支 他有严格的文 ...