关注
//堆棋子JAVA
import java.util.*;
public class Main{
//public static int m = 10^9; //循环边界
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int[] temp1 = new int[n];
int[] temp2 = new int[n];
//取所有初始棋子的最大边界作为循环边界(这样会超内存),不理解大佬说的为何汇聚点一定在已有棋子的横纵坐标处??
//int maxX = 0;
//int maxY = 0; //循环边界
for(int i=0; i<n; i++){
temp1[i] = sc.nextInt(); //循环边界
//maxX = Math.max(maxX,temp1[i]);
}
for(int i=0; i<n; i++){
temp2[i] = sc.nextInt();
//maxY = Math.max(maxY,temp2[i]);
}
Point[] point = new Point[n+1]; //棋子的初始位置
for(int i=0; i<n; i++){
point[i+1] = new Point(temp1[i],temp2[i]);
}
int[] shortDistance = new int[n+1]; //放置i个棋子的最少操作次数
Arrays.fill(shortDistance,Integer.MAX_VALUE);
//循环边界没取10^9,只能通过30%;取初始棋子的最大边界,通过60%。取初始棋子下标,100%
for(int i : temp1){
for(int j : temp2){
int[] distance = new int[n+1];
//在坐标(i,j)放置k个棋子
for(int k=1; k<=n; k++){ //求出(i,j)到每个初始点的距离,排序
distance[k] = Math.abs(i-point[k].x) + Math.abs(j-point[k].y);
}
Arrays.sort(distance);
int temp = 0;
//求若在(x,y)放置1~n个棋子的最短距离,更新结果集合(判断全局最短是否为在(i,j)处获得)
for(int k=1; k<=n; k++){
temp += distance[k];
shortDistance[k] = Math.min(shortDistance[k],temp);
}
}
}
for(int i=1; i<=n-1; i++){
System.out.print(shortDistance[i] + " ");
}
System.out.println(shortDistance[n]);
}
}
private static class Point{
int x;
int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
}
查看原帖
点赞 评论
相关推荐
05-24 18:04
Université d’Auvergne-Clermont-Ferrand 1 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 写给毕业5年后的自己 #
4093次浏览 94人参与
# 好好告别我的学生时代 #
42080次浏览 817人参与
# 华泰证券Fintech星战营 #
168223次浏览 191人参与
# 职场捅娄子大赛 #
318459次浏览 3254人参与
# 毕业季等于分手季吗 #
13531次浏览 153人参与
# 华为求职进展汇总 #
4644041次浏览 28244人参与
# 海信求职进展汇总 #
64957次浏览 359人参与
# 机械制造岗投递时间线 #
22241次浏览 341人参与
# 晒一下我的毕业照 #
31928次浏览 349人参与
# 如何缓解求职过程中的焦虑? #
7343次浏览 95人参与
# 如果今天是你的last day,你会怎么度过? #
22657次浏览 197人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
108241次浏览 781人参与
# 晒晒我司的端午福利 #
14842次浏览 99人参与
# 记录实习开销 #
25535次浏览 185人参与
# HR问:你期望的薪资是多少?如何回答 #
40008次浏览 525人参与
# 我想象的实习vs现实的实习 #
280275次浏览 2214人参与
# 上班苦还是上学苦呢? #
222771次浏览 1329人参与
# 工作两年想退休了 #
119885次浏览 1120人参与
# 视觉/交互/设计百问百答 #
43189次浏览 427人参与
# 如果中了500万,你会离职吗? #
81979次浏览 649人参与
# 实习生如何通过转正 #
84955次浏览 1326人参与