一、题目描述
日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。
- 如果上报太频繁,会对服务端造成压力;
- 如果上报太晚,会降低用户的体验;
- 如果一次上报的条数太多,会导致超时失败。
为此,项目组设计了如下的上报策略:
- 每成功上报一条日志,奖励1分
- 每条日志每延迟上报1秒,扣1分
- 积累日志达到100条,必须立即上报
给出日志序列,根据该规则,计算首次上报能获得的最多积分数。
二、输入描述
按时序产生的日志条数T1,T2…Tn,其中1 <= n <= 1000,0 <=Ti <= 100。
三、输出描述
首次上报最多能获得的积分数。3222
四、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String[] arr = line.split(" ");
int count = 0;
int max = 0;
for (int i = 0; i < arr.length; i++) {
int num = Integer.valueOf(arr[i]);
if (num == 0) {
continue;
}
count += num;
int score = 0;
for (int j = 0; j <= i; j++) {
if (count > 100 && i == j) {
score += num - (count - 100);
} else {
score += Integer.valueOf(arr[j]) - (i - j) * Integer.valueOf(arr[j]);
}
}
if (score > max) {
max = score;
}
if (count >= 100) {
break;
}
}
System.out.println(max);
}
五、效果展示
1、输入
2 95 3
2、输出
95
3、说明
如果第2个时刻上报,可获得最大积分(2 + 95)- 2 * 1 = 95。
🏆下一篇:华为OD机试真题 Java 实现【货币单位换算】【2023Q1 100分】
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。