Lintcode 1667.石头

Lintcode 1667.石头题目大意:一条直线上有n个石头,一个人从左往右走,碰到奇数块石头(碰到一块石头数一个数,这里指数的数是奇数),就往右扔,碰到偶数的石头就不管他,如果两块石头在同一个位置,就扔大的那块(能扔的距离小的)。问最后最远的那块石头的位置。思路:用优先队列模拟,每遇到奇数石头,就将其坐标加上D[i],放回优先队列,当石头重叠时,先扔投大的(能扔的距离小的),故在比较函数中,以位置为第一关键字,以投掷距离…

大家好,又见面了,我是你们的朋友全栈君。

题目大意:一条直线上有n个石头,一个人从左往右走,碰到奇数块石头(碰到一块石头数一个数,这里指数的数是奇数),就往右扔,碰到偶数的石头就不管他,如果两块石头在同一个位置,就扔大的那块(能扔的距离小的)。问最后最远的那块石头的位置。

思路:用优先队列模拟,每遇到奇数石头,就将其坐标加上D[i],放回优先队列,当石头重叠时,先扔投大的(能扔的距离小的),故在比较函数中,以位置为第一关键字,以投掷距离为第二关键字。

 

class Node {
        int p;
        int d;
    }

    public int getDistance(int[] p, int[] d) {
        PriorityQueue<Node> priorityQueue = new PriorityQueue<>((o1, o2) -> {
            if (o1.p == o2.p) {
                return o1.d - o2.d;
            } else {
                return o1.p - o2.p;
            }
        });

        Node res = null;

        for (int i = 0; i < p.length; i++) {
            Node node = new Node();
            node.p = p[i];
            node.d = d[i];
            priorityQueue.add(node);
        }
        boolean temp = true;
        while (!priorityQueue.isEmpty()) {
            res = priorityQueue.remove();
            if (temp) {
                res.p = res.p + res.d;
                priorityQueue.add(res);
            }
            temp = !temp;
        }
        return res.p;
    }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163855.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • quartus ii12.1安装教程_ghost手动安装教程

    quartus ii12.1安装教程_ghost手动安装教程安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。1.鼠标右击【QuartusII11.0】压缩包选择【解压到QuartusII11.0】。2.双击打开解压后的【QuartusII11.0】文件夹。3.双击打开【Quartus】文件夹。4.鼠标右击【11.0_quartus_windows.exe】选择【以管理员身份运行】。5.点击【Install】。6.解压中。7.勾选【AllowAlter…

    2022年10月15日
    1
  • spring spel表达式_substring sql

    spring spel表达式_substring sqlSpEL表达式简介用法1.注解@Value2.XML配置3.Expression表达式语法简介SpringExpressionLanguage(缩写为SpEL)是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。依赖:在这里插入代码片用法SpEL有三种用法,一种是在注解@Value中

    2025年8月28日
    5
  • Centos7 网络配置 设置静态Ip

    Centos7 网络配置 设置静态Ip服务器Centos7系统装好后,我需要上网功能,这样客户端才可以连接服务端,那么那些命令可以配置网络登录系统配置动态IP上网输入命令:ls/etc/sysconfig/network-scripts/查看网卡列表,一般默认第一个就是你电脑的网卡,ifconfig-enp6s0就是我的有线网卡。输入命令cat/etc/sysconfig/network-scripts/ifcfg-e

    2022年5月3日
    79
  • 火山图标记基因_火山地形图

    火山图标记基因_火山地形图现在很多文章会要求火山图中显示某一个基因名称,或者是某一些基因的名称,这时候我们应该怎么做呢?很多人会选择使用AI或者PS来做,在这里我介绍的是,如何用R绘制这样的图加载R包library(ggpubr)library(ggthemes)如果没有安装,可以使用下面的代码进行安装install.packages(‘ggthemes’)install.packages(‘ggpubr’)…

    2022年10月21日
    3
  • idea创建java项目的步骤_Java为什么新建不了项目

    idea创建java项目的步骤_Java为什么新建不了项目开发工具与关键技术:IDEA与创建项目作者:李哲定撰写时间:2021年5月18日IntelliJIDEA如何创建一个普通的java项目,及创建java文件并运行首先,确保idea软件正确安装完成,java开发工具包jdk安装完成。IntelliJIDEA下载地址:https://www.jetbrains.com/idea/download/#section=windowsjdk下载地址:http://www.oracle.com/technetwork/java/javase/down

    2022年9月30日
    1
  • 数字化转型中的大数据治理架构

    数字化转型中的大数据治理架构一、数字化时代大数据向服务化发展数字化时代,我们的数据来源比以前更广了。第一,之前传统企业政府的IT系统主要是面向内部使用,产生了一些信息,现在已经面向外部使用了;第二,更多行为信息、社交信息都会变成企业的数据;第三,我们有很多非结构化的数据,比如媒体、视频数据等;第四,还有物联网传感器方面的数据等。这些数据大部分是非结构化的,如媒体数据、视频数据,包括物联网传感器等信息,这些信息远比以前更加难以…

    2025年8月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号