美文网首页
加油站(贪心)

加油站(贪心)

作者: 抬头挺胸才算活着 | 来源:发表于2021-08-05 08:25 被阅读0次

题目

小伟要开车去一个与他家距离为 L(1 <= L <= 1000000) 个单位的地方旅行, 他从家里出发时车上有 P(1 <= P <= 1000000) 单位的汽油, 汽车每行驶 1 单位的路程要消耗 1 单位的汽油。 如果汽车在中途汽油耗尽就无法继续前行, 因而无法到达目的地。 在途中一共有 N(1 <= N <= 10000) 个加油站, 第 i 个加油站在距离终点 Ai(1 <= Ai <= L) 单位的地方, 最多给汽车加 Bi(1 <= Bi <= 100) 单位的汽油。 假设汽车的油箱容量无限大, 请问小伟能不能顺利到达目的地呢?如果可以,输出最少加多少次油, 不可以则输出 -1。

提示

车在开往终点的途中, 只有在加油站才能加油. 但是, 可以认为在到达加油站 i 时, 就获得了一次在之后的任何时候都可以加 Bi 单位的汽油的权利, 在解决这个问题上也是一样, 而在之后需要加油时, 就认为是在之前经过的加油站加的油就可以了, 因为希望在到达终点时加油的次数尽可能的少, 所以当燃料为 0 了之后在进行加油就行, 当燃料为 0 时, 选用加油量最大的加油站. 为了提高效率, 可以用优先队列来存储有权利加的油的油量.

代码

package com.company;

import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.Collectors;

public class OJ53 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()) {
            int W = sc.nextInt(), width = W;

            int startX = 0, startY = 0, count = 1;
            int numTriangle = width / 3 + (width % 3 == 0 ? 0 : 1);
            int[][] buff = new int[width][width];

            for (int i = 0; i < numTriangle; i++) {
                for (int j = 0; j < width; j++) {
                    buff[startX][startY + j] = count;
                    count += 1;
                }

                for (int j = 0; j < width - 1; j++) {
                    buff[startX + j + 1][startY + width - 2 - j] = count;
                    count += 1;
                }

                for (int j = 0; j < width - 2; j++) {
                    buff[startX + width - 2 - j][startY] = count;
                    count += 1;
                }

                startX += 1;
                startY += 1;
                width -= 3;
            }

            for (int i = 0; i < W; i++) {
                System.out.println(Arrays.stream(buff[i]).filter(x -> (x != 0)).mapToObj(String::valueOf).collect(Collectors.joining(" ")));
            }
        }
    }
}

相关文章

  • 加油站(贪心)

    题目 小伟要开车去一个与他家距离为 L(1 <= L <= 1000000) 个单位的地方旅行, 他从家里出发时车...

  • 984. 不含 AAA 或 BBB 的字符串/ 134. 加油站

    984. 不含 AAA 或 BBB 的字符串 相关标签 : 贪心算法 134. 加油站 相关标签: 贪心算法

  • 贪心十二:加油站

    题目地址: https://leetcode-cn.com/problems/gas-station/[http...

  • 贪心三:加油站

    题目地址: https://leetcode-cn.com/problems/gas-station/[http...

  • 再复习贪心 leetcode 134 加油站

    写这题之前,好好回顾下贪心解法: 分发糖果 / 饼干,第一天写的内容。排序后,先从最小的孩子开始满足。 跳跃数组。...

  • POJ2431 Expedition

    赤裸裸的贪心,因为油箱无限大,所以我们可以这么认为,我们路过一个加油站之后,我们在之后的路上随时可以选择加那个加油...

  • 舍得

    贪心VS舍得,目标太多—贪心,什么都想得到—贪心,什么都想要美好—贪心,什么都想要舒服—贪心,没有付出就想要得到—...

  • 加油站排班不合理对销量有影响吗?

    加油站排班涉及到每个加油站不同的独特情况,包含:加油站位置、规模、历史销量规律、人员配备、员工个体特性等,加油站日...

  • 贪心算法——LintCode加油站问题,下一个排列问题

    一. 加油站问题: 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第_i_个加油站前...

  • 做人不能太贪心

    做人不能太贪心 嗯,做人不能太贪心 是的,做人不能太贪心 我发现自己有些贪心 我想要得到更多却又不想失去 别人的,...

网友评论

      本文标题:加油站(贪心)

      本文链接:https://www.haomeiwen.com/subject/eatmvltx.html