题解 | #知识竞赛#

知识竞赛

http://www.nowcoder.com/questionTerminal/2a9089ea7e5b474fa8f688eae76bc050

为什么这样遍历也行

在看不懂其他复杂的算法下,自己写了个简单遍历,这样也行?

实在不懂,有没有大佬解释一下。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=Integer.parseInt(scanner.nextLine());
        PriorityQueue<double[]> q=new  PriorityQueue<>((a1,b) -> {
            double x=(a1[0]+ a1[1]);
            double y=(b[0]+b[1]);
            if(x>y){ return -1;}
            else{return 1;}
        });
        for(int i=0;i<n;i++){
            String[] s=scanner.nextLine().split(" ");
            q.offer(new double []{Integer.parseInt(s[0]),Integer.parseInt(s[1])});           
        }       
        double p1[]=q.poll();
        double p2[]=q.poll();
        double min=0;
        while (q.size()>0){
            if(min<Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0)){
                min=Math.min((p1[1]+p2[1])/2.0,(p1[0]+p1[0])/2.0);
            }
            p1=p2;
            p2=q.poll();
        }
        System.out.println(min);
    }    
}
全部评论
按ai-bi的绝对值排个序然后从前到后遍历一遍(跟这个优先队列其实是一样的)过了。。。可能测试用例太水?
点赞 回复 分享
发布于 2022-06-13 22:19

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务