这道题的正解是 单调队列优化DP,但是我们用朴素解法 枚举窗口最大值 也能在考试时拿到一定的分数。
题意:从下标 0 跳到 n−1,每次最多前进 K 步,路径上分数之和最大(分数可正可负)。
设 dp[i] 为到达下标 i 时的最大累计得分,则:
dp[i]=j∈[i−K,i−1]maxdp[j]+node_scores[i]安全分析师小王正在开发一款先进的入侵检测系统 (IDS),旨在实时监控网络流量并失败潜在的恶意活动;如何在一个复杂的网络环境中,从起始节点出发,到达终端节点(即最后一个监控点),同时最大化累积的安全评分。
在这个系统中,整个网络被抽象为一个下标从 0 开始的整数数组 node _scores ,其中每个元素代表对应位置的安全评分。正值表示该位置是安全的或有正面的安全措施,而负值则表示存在潜在风险或威胁。分析师开始于位置 0 (入口节点),每一步可以前进最多 k 步,但不能超出数组边界。也就是说,如果当前位于下标 i ,则可以选择跳到 [i+1,min(n−1,i+k)] 包含两个端点的任意位置。目标是到达数组的最后一个位置(即最后一个监控点,下标为 n−1 ),并且在此过程中最大化累积的安全评分得分。这里的得分可以是正也可以是负,取决于路径上遇到的安全状况。
具体任务是编写一个算法,给定一个整数数组 node _scores 和一个整数 k ,该算法应返回能够获得的最大得分。这个得分是通过选将一条从起点到终点的最佳路径来实现的,这条路径上的所有数字之和即为最大得分,即使某些位置的安全评分为负。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册