安全分析师小王正在开发一款先进的入侵检测系统(IDS),旨在实时监控网络流量并识别潜在的恶意活动。系统将网络抽象为一个下标从0开始的整数数组 node_scores,其中每个元素代表对应位置的安全评分:正值表示安全或有正面安全措施,负值表示存在潜在风险或威胁。 分析师从入口节点(下标0)开始,每一步最多可以前进K步,但不能超出数组边界。也就是说,如果当前位于下标i,则可以跳到任意下标j,满足
i+1≤j≤min(n−1,i+K)
目标是到达下标n−1(最后一个监控点),并使累积的安全评分总和最大。注意:路径上的评分可能为正也可能为负。
安全分析师小王正在开发一款先进的入侵检测系统 (IDS),旨在实时监控网络流量并失败潜在的恶意活动;如何在一个复杂的网络环境中,从起始节点出发,到达终端节点(即最后一个监控点),同时最大化累积的安全评分。
在这个系统中,整个网络被抽象为一个下标从 0 开始的整数数组 node _scores ,其中每个元素代表对应位置的安全评分。正值表示该位置是安全的或有正面的安全措施,而负值则表示存在潜在风险或威胁。分析师开始于位置 0 (入口节点),每一步可以前进最多 k 步,但不能超出数组边界。也就是说,如果当前位于下标 i ,则可以选择跳到 [i+1,min(n−1,i+k)] 包含两个端点的任意位置。目标是到达数组的最后一个位置(即最后一个监控点,下标为 n−1 ),并且在此过程中最大化累积的安全评分得分。这里的得分可以是正也可以是负,取决于路径上遇到的安全状况。
具体任务是编写一个算法,给定一个整数数组 node _scores 和一个整数 k ,该算法应返回能够获得的最大得分。这个得分是通过选将一条从起点到终点的最佳路径来实现的,这条路径上的所有数字之和即为最大得分,即使某些位置的安全评分为负。
每组数据第一行为最大的进步数 k ,第二行为节点数量 n ,第三行的 n 个数为每个节点的安全得分
输入范围限制:
1<=node _scores.length,k<=100000
−10000<=node _scores[i]<=10000
到达最后一个节点时可以获得的最大安全得分
输入
2
8
3 -5 -10 2 -1 5 -6 -5
输出
0
说明
最多可前进步数 k=2 ,安全评分数组长度 n=8 ,数组 nodes _cores 的具体值为 =[3,−5,−10,2,−1,5,−6,−5] ,可使安全评分最大的子字列 [3,−5,2,5,−5] ,因此最大安全得到为 0
输入
3
6
1 -5 -2 4 0 7
输出
12
说明
最多可前进步数 k=3 ,安全评分数组长度 n=6 ,数组 nodes _cores 的具体值为 =[1,−5,−2,4,0,7] ,可使安全评分最大的子字列 [1,4,7] ,因此最大安全得到为 12
输入
2
6
1 -3 -2 4 -7 5
输出
8
说明
最多可前进步数 k=2 ,安全评分数组长度 n=6 ,数组 nodes _cores 的具体值为 =[1,−3,−2,4,−7,5] ,可使安全评分最大的子字列 [1,−2,4,5] ,因此最大安全得到为 8