news 2026/5/14 16:40:04

(新卷,100分)-日志采集系统(JavaPythonJSC++C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)-日志采集系统(JavaPythonJSC++C)

题目描述

日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。

为此,项目组设计了如下的上报策略:

  1. 每成功上报一条日志,奖励1分
  2. 每条日志每延迟上报1秒,扣1分
  3. 积累日志达到100条,必须立即上报

给出日志序列,根据该规则,计算首次上报能获得的最多积分数。

输入描述

按时序产生的日志条数 T1,T2…Tn,其中 1<=n<=1000,0<=Ti<=100

输出描述

首次上报最多能获得的积分数

示例1

输入

1 98 1

输出

98

说明

T1 时刻上报得 1 分
T2 时刻上报得98分,最大
T3 时刻上报得 0 分

示例2

输入

50 60 1

输出

50

说明

如果第1个时刻上报,获得积分50。如果第2个时刻上报,最多上报100条,前50条延迟上报1s,每条扣除1分,共获得积分为 100-50=50

示例3

输入

3 7 40 10 60

输出

37

说明

T1时刻上报得3分

T2时刻上报得7分

T3时刻上报得37分,最大

T4时刻上报得-3分

T5时刻上报,因为已经超了100条限制,所以只能上报100条,得-23分

解题思路

上报策略

例子解析

  1. 输入:1 98 1,输出:98

  2. 输入:50 60 1,输出:50

  3. 输入:3 7 40 10 60,输出:37

Java

import java.util.Scanner; public class LogCollection { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 读取输入的日志序列 String input = in.nextLine(); // 将日志序列按空格分割成数组 String[] logs = input.split(" "); int totalCount = 0; // 总日志条数 int maxScore = 0; // 最大积分数 for (int i = 0; i < logs.length; i++) { int logCount = Integer.valueOf(logs[i]); // 当前时间点的日志条数 if (logCount == 0) { continue; // 如果当前时间点没有日志条数,则跳过 } totalCount += logCount; // 更新总日志条数 int score = 0; // 当前时间点的积分数 for (int j = 0; j <= i; j++) { if (totalCount > 100 && i == j) { // 如果总日志条数超过100,并且当前时间点是最后一个时间点 score += logCount - (totalCount - 100); // 计算得分 } else { score += Integer.valueOf(logs[j]) - (i - j) * Integer.valueOf(logs[j]); // 计算得分 } } if (score > maxScore) { maxScore = score; // 更新最大积分数 } if (totalCount >= 100) { break; // 如果总日志条数达到100条以上,则退出循环 } } System.out.println(maxScore); // 输出最大积分数 } }

Python

import sys # 读取输入的日志序列 input = sys.stdin.readline().strip() # 将日志序列按空格分割成数组 logs = input.split(" ") totalCount = 0 # 总日志条数 maxScore = 0 # 最大积分数 for i in range(len(logs)): logCount = int(logs[i]) # 当前时间点的日志条数 if logCount == 0: continue # 如果当前时间点没有日志条数,则跳过 totalCount += logCount # 更新总日志条数 score = 0 # 当前时间点的积分数 for j in range(i+1): if totalCount > 100 and i == j: # 如果总日志条数超过100,并且当前时间点是最后一个时间点 score += logCount - (totalCount - 100) # 计算得分 else: score += int(logs[j]) - (i - j) * int(logs[j]) # 计算得分 if score > maxScore: maxScore = score # 更新最大积分数 if totalCount >= 100: break # 如果总日志条数达到100条以上,则退出循环 print(maxScore) # 输出最大积分数

JavaScript

var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function (input) { var logs = input.split(" "); var totalCount = 0; // 总日志条数 var maxScore = 0; // 最大积分数 for (var i = 0; i < logs.length; i++) { var logCount = parseInt(logs[i]); // 当前时间点的日志条数 if (logCount === 0) { continue; // 如果当前时间点没有日志条数,则跳过 } totalCount += logCount; // 更新总日志条数 var score = 0; // 当前时间点的积分数 for (var j = 0; j <= i; j++) { if (totalCount > 100 && i === j) { // 如果总日志条数超过100,并且当前时间点是最后一个时间点 score += logCount - (totalCount - 100); // 计算得分 } else { score += parseInt(logs[j]) - (i - j) * parseInt(logs[j]); // 计算得分 } } if (score > maxScore) { maxScore = score; // 更新最大积分数 } if (totalCount >= 100) { break; // 如果总日志条数达到100条以上,则退出循环 } } console.log(maxScore); // 输出最大积分数 rl.close(); });

C++

#include <iostream> // 包含输入输出流库 #include <vector> // 包含向量容器库 using namespace std; int main() { string input; getline(cin, input); // 从标准输入读取整行数据 vector<string> logs; // 用于存储日志条数的字符串向量 string temp = ""; // 临时字符串变量,用于逐字符拼接日志条数 for (int i = 0; i < input.length(); i++) { // 遍历输入的每一个字符 if (input[i] == ' ') { // 遇到空格时,表示一个日志条数的结束 logs.push_back(temp); // 将当前拼接的字符串加入日志向量 temp = ""; // 重置临时字符串变量 } else { temp += input[i]; // 拼接字符 } } logs.push_back(temp); // 将最后一个日志条数加入日志向量 int totalCount = 0; // 累计日志总条数 int maxScore = 0; // 记录最大积分数 for (int i = 0; i < logs.size(); i++) { // 遍历每个时间点的日志 int logCount = stoi(logs[i]); // 将当前日志条数从字符串转换为整数 if (logCount == 0) { // 如果当前时间点日志条数为0,跳过该时间点 continue; } totalCount += logCount; // 累加日志总条数 int score = 0; // 当前时间点的积分 for (int j = 0; j <= i; j++) { // 计算当前时间点的积分 if (totalCount > 100 && i == j) { // 如果总日志条数超过100且当前为最后一个时间点 score += logCount - (totalCount - 100); // 计算积分,考虑超出100条的部分 } else { score += stoi(logs[j]) - (i - j) * stoi(logs[j]); // 正常积分计算,考虑延迟扣分 } } if (score > maxScore) { // 更新最大积分数 maxScore = score; } if (totalCount >= 100) { // 如果总日志条数达到或超过100,提前结束循环 break; } } cout << maxScore << endl; // 输出最大积分数 return 0; }

C语言

#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char input[1000]; // 定义一个字符数组用于存储输入 fgets(input, 1000, stdin); // 从标准输入读取一行数据 char logs[100][10]; // 定义一个二维字符数组存储日志条数,每条日志最长为10个字符 int logCount = 0; // 日志条数计数器 char *token = strtok(input, " "); // 使用空格分割输入字符串,获取第一个日志条数 while (token != NULL) { // 逐个分割字符串,直到没有更多的分割部分 strcpy(logs[logCount], token); // 将当前日志条数复制到日志数组中 logCount++; // 增加日志条数计数 token = strtok(NULL, " "); // 获取下一个日志条数 } int totalCount = 0; // 累积日志总条数 int maxScore = 0; // 记录最大积分数 for (int i = 0; i < logCount; i++) { // 遍历每个时间点的日志 int logNum = atoi(logs[i]); // 将当前日志条数从字符串转换为整数 if (logNum == 0) { // 如果当前时间点日志条数为0,跳过该时间点 continue; } totalCount += logNum; // 累加日志总条数 int score = 0; // 当前时间点的积分 for (int j = 0; j <= i; j++) { // 计算当前时间点的积分 int logAtJ = atoi(logs[j]); // 将日志条数从字符串转换为整数 if (totalCount > 100 && i == j) { // 如果总日志条数超过100且当前为最后一个时间点 score += logNum - (totalCount - 100); // 计算积分,考虑超出100条的部分 } else { score += logAtJ - (i - j) * logAtJ; // 正常积分计算,考虑延迟扣分 } } if (score > maxScore) { // 更新最大积分数 maxScore = score; } if (totalCount >= 100) { // 如果总日志条数达到或超过100,提前结束循环 break; } } printf("%d\n", maxScore); // 输出最大积分数 return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 5:45:24

HDFS 在大数据领域的数据存储发展方向

HDFS 在大数据领域的数据存储发展方向 关键词:HDFS、大数据存储、分布式文件系统、数据湖、存储架构、数据管理、未来趋势 摘要:本文深入探讨了Hadoop分布式文件系统(HDFS)在大数据领域的数据存储发展方向。我们将从HDFS的基本原理出发,分析其当前的技术架构和局限性,然后详…

作者头像 李华
网站建设 2026/5/12 20:43:41

如何构建生物制药企业一体化管理体系,赋能全产业链协同?

某国资体系生物技术公司是从事传染病相关研究和生物制品生产的机构&#xff0c;是一家集科研、生产、销售以及研究生培养为一体的综合性生物制药企业。 企业组织机构庞大、分布地域广&#xff0c;在管理行涉及的核心业务包括产品管理、批号管理、生产过程管理、设备管理、质量管…

作者头像 李华
网站建设 2026/5/12 10:47:38

关于 WEEX 唯客平台安全性的客观信息梳理

一、在信息密集环境中如何判断平台安全性在数字资产行业中&#xff0c;平台类型众多、信息来源复杂。用户在初次接触某一交易平台时&#xff0c;通过搜索其安全性、合规性与资金保障情况来进行核查&#xff0c;本身是一种理性的风险意识体现。但要区分合规运营的平台与存在风险…

作者头像 李华
网站建设 2026/5/11 12:38:51

基于GTE大模型的语义相似度实践|可视化WebUI+API集成方案

基于GTE大模型的语义相似度实践&#xff5c;可视化WebUIAPI集成方案 1. 背景与核心价值 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;语义相似度计算是构建智能搜索、推荐系统、问答引擎和文本聚类等应用的核心能力。传统方法依赖关键词匹配或TF-IDF等统计特征…

作者头像 李华
网站建设 2026/5/11 8:49:09

AI应用架构师如何运用AI算法优化智能财务AI预测系统

AI应用架构师如何运用AI算法优化智能财务AI预测系统 一、引入&#xff1a;财务预测的“生死局”与AI的破局之路 1. 一个真实的痛点故事 某零售企业的财务总监最近愁得睡不着觉&#xff1a; 上季度的营收预测偏差高达25%——原本预计营收1.2亿&#xff0c;实际只做了9000万&…

作者头像 李华
网站建设 2026/5/11 8:49:55

【Java毕设全套源码+文档】基于Web的多传感器健康管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华