202009-4星际旅行 ccf java 90分

先定义类(坐标点):

class Coordinate{double co;//点和o距离int [] dis;//各个维度坐标Coordinate(int dis[],int o[],int n){this.dis = dis;double temp = 0;for(int i=0;i<n;i++){temp += (dis[i]-o[i])*(dis[i]-o[i])*1.0;}this.co = Math.sqrt(temp*1.0);}
}

处理两点间最短距离的方法:

public static double getDis(Coordinate a,Coordinate b){//如果o到ab距离<=r 则直接就是弧长double ab = 0;for(int i=0;i<n;i++){ab += (a.dis[i]-b.dis[i])*(a.dis[i]-b.dis[i])*1.0;}ab = Math.sqrt(ab*1.0);double cosa = (a.co*a.co+ab*ab-b.co*b.co)/(2*a.co*ab);double cosb = (b.co*b.co+ab*ab-a.co*a.co)/(2*b.co*ab);if(cosa<=0 || cosb<=0){//a或b为钝角或直角 则ab在黑洞外return ab;}else{double p = (ab+a.co+b.co)*1.0/2*1.0;double s = Math.sqrt(p*(p-a.co)*(p-b.co)*(p-ab));double h = 2*s/ab;if(h<r){//在内部 返回 ae+ef+fb 其中ef为切点double ae = Math.sqrt(a.co*a.co-r*r*1.0);double fb = Math.sqrt(b.co*b.co-r*r*1.0);double coso = (a.co*a.co+b.co*b.co-ab*ab)/(2*a.co*b.co*1.0);double cosaoe = r*1.0/a.co;double cosfob = r*1.0/b.co;double arfa = Math.acos(coso)-Math.acos(cosaoe)-Math.acos(cosfob); double ef = r*arfa;return ae+fb+ef;}return ab;}

剩下的看注释就好啦
感觉计算距离那个地方完全就是数学推导

import java.util.*;public class _4 {public static int n,m,r;
static int[] o;//储存o点坐标
static Coordinate ms[];//储存所有旅行点坐标
static double[] diss;//计算第i个点和其他点之间的最短距离public static void main (String args[]){Scanner sc = new Scanner(System.in);n = sc.nextInt();m  = sc.nextInt();r = sc.nextInt();o = new int[n];ms = new Coordinate[m];diss = new double[m];for(int i=0;i<n;i++){//o点坐标     o[i] =sc.nextInt();}for(int i=0;i<m;i++){int[] temp = new int[m];for(int j=0;j<n;j++){            temp[j] = sc.nextInt();}   ms[i] = new Coordinate(temp,o,n);}//输入处理完成//需要计算每两点之间for(int i=0;i<m;i++){for(int j=i+1;j<m;j++){double d = getDis(ms[i],ms[j]);diss[i] += d;diss[j] += d;}      }for(int i=0;i<m;i++){System.out.println(String.format("%.12f", diss[i]));}
}}
}

不知道为啥超时了 还没想好不超时的算法
90分已经满足了(不是)

202009-4星际旅行 ccf java 90分相关推荐

  1. java利用条件运算符的嵌套来完成此题:学习成绩 =90分.....(java50道经典编程题)

    题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 这是一个写条件运算的例子. 先和大家聊一下条件运算符,所谓条件运算也 ...

  2. 12306给自家技术团队打90分;Oracle 加快 Java 迭代速度

    (点击上方蓝字,快速关注我们) 转自:开源中国.solidot.cnBeta.腾讯科技等 0.最高峰抢票时段平稳度过,12306 技术团队为自己打 90 分以上 据中国之声<全国新闻联播> ...

  3. CCF csp软件能力认证 第15次 第5题 管道清洁 java 100分

    题目csp模拟考试系统201812-5的题目. 我的java张老师是负责csp的,于是java的一个作业就是做这一套题.用java写,行,c++转java而已,写算法题嘛,基本语法懂了就好了,就边学边 ...

  4. CCF 201412-3 集合竞价 90分代码 C++

    问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s 表示一个 ...

  5. mysql一百转化为五分制_设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~90分为B,...

    设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出.90分以上为A,80~90分为B,以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内 ...

  6. html成绩百分制转换为,设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~90分为B,...

    设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出.90分以上为A,80~90分为B,以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内 ...

  7. 低于90分的成绩 java_查询平均成绩低于60分的学生学号、姓名及成绩。

    查询平均成绩低于60分的学生学号.姓名及成绩.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查询平均成绩低于60分的学 ...

  8. 利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

    题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 程序分析:(a>b)?a:b这是条件运算符的基本例子. impo ...

  9. ACMNO.5给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E

    题目描述 给出一百分制成绩,要求输出成绩等级'A'.'B'.'C'.'D'.'E'. 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E 输入 一个整数0-100以内 ...

最新文章

  1. 专访香港大学罗平:师从汤晓鸥、王晓刚,最早将深度学习应用于计算机视觉的「先行者」
  2. 26.SpringBoot事务注解详解
  3. 对commonMark.js的理解学习
  4. 整型和浮点型的区别_C的基础内容:常量之数值型常量,适合新手的学习
  5. Intellij IDEA + Maven + Cucumber 项目 (三):简单解释RunCukesTest.java
  6. 扩展方法 枚举值_扩展枚举功能的两种方法
  7. 基于JAVA+Servlet+JSP+MYSQL的旅游酒店机票预订管理系统
  8. 添加的oracle语句,Oracle中Insert语句的总结
  9. 30岁,没有月入过万算失败吗?用可视化分析30岁的人收入真相
  10. ASP.NET页面的生命周期(转载)
  11. 安卓仿苹果键盘输入法_iphone输入法安卓版下载
  12. 关于Ubuntu的联网操作
  13. html表格相同合并单元格,根据id相同,table表格动态合并
  14. 【调剂】云南大学2021年硕士研究生招生调剂工作的说明
  15. 深层学习:心智如何超越经验3.1 创造性问题
  16. 神州数码交换机CS6200命令学习(三)
  17. Hbase命令行语句
  18. HTML做网页登录界面
  19. eclipse-美化插件
  20. RF+APPIUM详细使用教程

热门文章

  1. idea windows快捷键
  2. Android 代码混淆 包名被混淆 主工程二次混淆 一站解决你的混淆
  3. google海底光缆图_Google 又规划了三条海底光缆,还嫌它的云服务速度不够快
  4. [九度][何海涛] 字符串的排序
  5. 马克扎克伯格节俭_马克·扎克伯格的垃圾实在很难抢
  6. Ubuntu中使用apt-get时无法搜索软件的解决方法
  7. 水经注,bigemap 功能对比
  8. 解决springboot上传图片无法显示问题
  9. 2010nbsp;网络流行语考试题nbsp;(含答案)
  10. 黑鱼资源完整模板分享 已本地化CSS JS