5,6,10RE,其它都AC,求助
  • 板块P5143 攀爬者
  • 楼主Mr_xiao
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/29 19:46
  • 上次更新2023/10/27 00:59:06
查看原帖
5,6,10RE,其它都AC,求助
871152
Mr_xiao楼主2022/11/29 19:46
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
    //洛谷刷题专用
    public static void main(String[] args) throws IOException {

        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        int  count=Integer.parseInt(reader.readLine());
        int  data[][]=new int[count][3];
        for (int i = 0; i < data.length; i++) {
          String[] str=reader.readLine().split(" ");
            for (int j = 0; j < data[0].length; j++) {
                data[i][j]=Integer.parseInt(str[j]);
            }
        }

        quickSort(data, 0, data.length-1 );
        //完成排序,统计结果

        double temp=0;
        for (int i = 0; i < data.length-1; i++) {
            temp+=Math.sqrt((data[i+1][0]-data[i][0])*(data[i+1][0]-data[i][0])+(data[i+1][1]-data[i][1])*(data[i+1][1]-data[i][1])+(data[i+1][2]-data[i][2])*(data[i+1][2]-data[i][2]));

        }
        String format=String.format("%.3f",temp);
        System.out.println(Double.parseDouble(format));



    }

    public static  void quickSort(int arr[][],int left,int right){
        //排序z轴
        int l=left;
        int r=right;
        int  privote=arr[(right-left)/2+left][2];
        int  x=0;//临时变量
        int y=0;
        int z=0;
        while (l<r){
            while (arr[l][2]<privote){
                l++;
            }
            while(arr[r][2]>privote){
                r--;
            }
            if (l>=r){
                break;
            }else {
                //交换位置
                x=arr[l][2];
                arr[l][2]=arr[r][2];
                arr[r][2]=x;
                y=arr[l][1];
                arr[l][1]=arr[r][1];
                arr[r][1]=y;
                z=arr[l][0];
                arr[l][0]=arr[r][0];
                arr[r][0]=z;
            }
            if (arr[l][2]==privote){
                r++;
            }
            if (arr[r][2]==privote){
                l--;
            }
        }
        if (l==r){
            l++;
            r--;
        }
        if (r>left){
            quickSort(arr,left,r);
        }
        if (l<right){
            quickSort(arr,l,right);
        }
    }
}
2022/11/29 19:46
加载中...