动态规划+大堆也只能通过95%的测试用例,剩余的5%不知道要怎么才能通过。
      OD统一考试(C卷)    分值: 200分    题解: Java / Python / C++         题目描述   小明和朋友们一起玩跳格子游戏,   每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],   从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。   输入描述   第一行输入总的格子数量 n   第二行输入每个格子的分数 score[i]   第三行输入最大跳的步长 k   输出描述   输出最大得分   备注       格子的总长度 n 和步长 k 的区间在 [1, 100000]    每个格子的分数 score[i] 在 [-10000, 10000] 区间中      示例1   输入:61 -1 -6 7 -17 72输出:14说明:输出最大得分数,小明从起点score[0]开始跳,第一次跳score[1],第二次跳到score[3],第三次跳到score[5],因此得到的最大的得分是score[0] + score[1] + score[3] + score[5] = 14   题解       这道题是一个典型的动态规划问题。解题思路如下:         创建一个数组 dp,其中 dp[i] 表示跳到 score[i-1] 时能得到的最大得分。     使用大顶堆(或者优先队列)来维护前 k 个最大的 dp 值,以便在每一步更新 dp[i] 时能够找到前 k 个最大值。     从左到右遍历格子,更新 dp[i+1] 的值。具体更新方式为当前格子的分数加上前 k 个最大的 dp 值。     输出 dp[n],即跳到终点时的最大得分。          Java   import java.util.Arrays;import java.util.PriorityQueue;import java.util.Scanner;/** * @author code5bug */public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        int[] score = new int[n];        for (int i = 0; i < n; i++) score[i] = scanner.nextInt();        int k = scanner.nextInt();        // dp[i] 表示跳到 score[i-1] 能得到的最大得分        int[] dp = new int[n + 1];        Arrays.fill(dp, Integer.MIN_VALUE);        dp[0] = 0;        // 大顶堆实现, 堆中的元素:  new int[]{跳到第i步最大得分, 下标i}        PriorityQueue<int[]> heap = new Prio       
点赞 6
评论 2
全部评论

相关推荐

美团 客服平台 薪资应该是后端算高的了,我们姑且称为nk了,给3w签字费
点赞 评论 收藏
转发
点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1154638次浏览 17186人参与
# 通信和硬件还有转码的必要吗 #
11322次浏览 101人参与
# 不去互联网可以去金融科技 #
21410次浏览 260人参与
# 和牛牛一起刷题打卡 #
19304次浏览 1649人参与
# 实习与准备秋招该如何平衡 #
203722次浏览 3630人参与
# 大厂无回复,继续等待还是奔赴小厂 #
5212次浏览 35人参与
# OPPO开奖 #
19598次浏览 273人参与
# 通信硬件薪资爆料 #
266327次浏览 2486人参与
# 国企是理工四大天坑的最好选择吗 #
2261次浏览 34人参与
# 互联网公司评价 #
97840次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25064次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
455282次浏览 5134人参与
# 国企和大厂硬件兄弟怎么选? #
53973次浏览 1013人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14669次浏览 349人参与
# 硬件人的简历怎么写 #
82320次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19452次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
29151次浏览 254人参与
# 学历对求职的影响 #
161378次浏览 1805人参与
# 你收到了团子的OC了吗 #
539070次浏览 6391人参与
# 你已经投递多少份简历了 #
344500次浏览 4966人参与
# 实习生应该准时下班吗 #
97134次浏览 724人参与
# 听劝,我这个简历该怎么改? #
63538次浏览 622人参与
牛客网
牛客企业服务