关注
import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { long start=System.currentTimeMillis(); //获取开始时间 int n = in.nextInt(); int[][] a = new int[n][4]; for (int i = 0; i < n; i++) { a[i][0] = in.nextInt(); a[i][1] = in.nextInt(); a[i][2] = in.nextInt(); a[i][3] = in.nextInt(); } Position[] bPos = new Position[n]; double max = Double.MAX_VALUE; double time = 0.00; //time控制到 (t-1, t+1) for (int t = 0; t < 10; t++) { //所有点当前位置 for (int i = 0; i < n; i++) { double x = a[i][0]; double y = a[i][1]; double vx = a[i][2]; double vy = a[i][3]; bPos[i] = getPosition(x, y, vx, vy, t); } //所有点距离最远的 double length = getMaxLength(bPos); if (length < max) { max = length; time = t; } } //time控制到 (t-0.1, t+0.1) for (double t = time - 1.0; t < time + 1.0;) { //所有点当前位置 for (int i = 0; i < n; i++) { double x = a[i][0]; double y = a[i][1]; double vx = a[i][2]; double vy = a[i][3]; bPos[i] = getPosition(x, y, vx, vy, t); } //所有点距离最远的 double length = getMaxLength(bPos); if (length < max) { max = length; time = t; } t += 0.1; } //找到精确time for (double t = time - 0.1; t < time + 0.1;) { //所有点当前位置 for (int i = 0; i < n; i++) { double x = a[i][0]; double y = a[i][1]; double vx = a[i][2]; double vy = a[i][3]; bPos[i] = getPosition(x, y, vx, vy, t); } //所有点距离最远的 double length = getMaxLength(bPos); if (length < max) { max = length; time = t; } t += 0.01; } System.out.println(String.format("%.2f", time) + " " + String.format("%.2f", Math.sqrt(max))); //要测试的程序或方法 long end=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(end-start)+"ms"); } } static class Position { double x; double y; public Position(double x, double y) { this.x = x; this.y = y; } } static Position getPosition(double x, double y, double vx, double vy, double t) { double posX = x + t * vx; double posY = y + t * vy; Position position = new Position(posX, posY); return position; } static double getLength(Position pos1, Position pos2) { double x = pos1.x - pos2.x; double y = pos1.y - pos2.y; return x * x + y * y; } static double getMaxLength(Position[] positions) { double max = 0.00; for (int i = 0; i < positions.length - 1; i++) { for (int j = i; j < positions.length; j++) { double length = getLength(positions[i], positions[j]); if (length > max) { max = length; } } } return max; } }
查看原帖
点赞 1
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
304074次浏览 2697人参与
# 如果不工作真的会快乐吗 #
59533次浏览 520人参与
# 阿里云管培生offer #
18014次浏览 298人参与
# 地方国企笔面经互助 #
3906次浏览 11人参与
# 美团求职进展汇总 #
1328544次浏览 12454人参与
# 选完offer后,你后悔学本专业吗 #
20231次浏览 144人参与
# 百度开奖 #
164228次浏览 983人参与
# 正在实习的你,几点下班 #
52183次浏览 392人参与
# 国央企薪资爆料 #
8762次浏览 69人参与
# 如何一边实习一边秋招 #
992753次浏览 12640人参与
# 提前批简历挂麻了怎么办 #
146615次浏览 1948人参与
# 学历or实习经历,哪个更重要 #
51377次浏览 403人参与
# 海康威视求职进展汇总 #
399166次浏览 3406人参与
# 米哈游求职进展汇总 #
176220次浏览 1460人参与
# 求职遇到的搞笑事件 #
70942次浏览 577人参与
# 投递实习岗位前的准备 #
1179958次浏览 18398人参与
# 面试体验感最好的是哪家? #
85197次浏览 846人参与
# 实习生应该准时下班吗 #
167515次浏览 1159人参与
# 得物求职进展汇总 #
66429次浏览 682人参与
# 网申一定要掌握的小技巧 #
5363次浏览 54人参与
# 招聘要求与实际实习内容不符怎么办 #
10328次浏览 273人参与
# 0offer是寒冬太冷还是我太菜 #
899337次浏览 8015人参与