华为机试 - 日志首次上报最多积分
admin
2024-03-28 08:38:55
0

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

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

  • 如果上报太频繁,会对服务端造成压力;
  • 如果上报太晚,会降低用户的体验;
  • 如果一次上报的条数太多,会导致超时失败。

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

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

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

输入描述

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

输出描述

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

用例

输入

1 98 1

输出98
说明T1 时刻上报得 1 分
T2 时刻上报得98分,最大
T3 时刻上报得 0 分

题目解析

用例意思是:

如果在T1时刻上报日志,由于只有1条日志,因此可得1分。

如果在T2时刻上报日志,由于T1时刻产生的1条日志延迟了1秒上报,因此要扣1分,到了T2时刻可以上报1+98条日志,可得99分,因此99-1=98分。

如果在T3时刻上报日志,则T1日志延迟了2s,要扣1*2分,T2日志延迟了1s,要扣98*1分,T3时刻可以上报100条日志,可得100分,因此100-2-98=0分。

我的解题思路如下:

这种前后数据具有依赖关系,一般都是用动态规划DP解决。

首先,我用前缀和思路,将每个时刻,可得的正向分计算出来缓存进dp数组中。所谓正向分,比如T2时刻积累了99条日志,那么就应该得到99分。这是正向得分。但是最终得分还需要扣除延迟上报的负向得分。比如T2时刻上报日志的话,则T1时刻产生的每条日志都需要扣除1分,这是负向得分。因此T2时刻的最终得分是:正向得分  - 负向得分 = 99 - 1 = 98分。

计算正向得分时的dp公式为:

dp[0] = arr[0]

dp[i] = arr[i] + dp[i-1]

但是题目中说了,如果积累到100条日志,则必须在那个时刻将所有日志上报,因此dp公式需要修改为:

dp[0] = arr[0]

dp[i] = arr[i] + (dp[i-1] >= 100 ? 0 : dp[i-1])

负向得分的计算:

如果在T1时刻上报的话,无负向得分,即delay[0] = 0

如果在T2时刻上报的话,则负向得分来自于T1时刻, 即 deylay[1] = delay[0] + dp[0] = 0 + 1

如果在T3时刻上报的话,则负向得分来自于T1时刻, 即 deylay[2] = delay[1] + dp[1] = 1 + 99

因此可得 delay[i] = delay[i-1] + dp[i-1]

但是由于当日志满100条时,就必须上报,因此delay应该清零。

即 delay[i] = dp[i-1] >= 100 ? 0 : delay[i-1] + dp[i-1]

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const arr = line.split(" ").map(Number);const dp = [arr[0]]; // dp[i]表示:第i时刻可得的正向分const delay = [0]; // delay[i]表示:第i时刻被扣除的负向分const score = [arr[0]]; // score[i]表示:第i时刻最终得分for (let i = 1; i < arr.length; i++) {if (dp[i - 1] < 100) {dp[i] = arr[i] + dp[i - 1];delay[i] = delay[i - 1] + dp[i - 1];} else {dp[i] = arr[i];delay[i] = 0;}score[i] = dp[i] - delay[i];}console.log(Math.max.apply(null, score));
});

相关内容

热门资讯

黄金ETF持仓量报告解读(20... 截至7月23日,全球最大的黄金ETF SPDR Gold Trust持仓量为1009.298吨,较前...
珠宝店银回收有哪些行业通用标准 首饰加工行业金属废料处置背景 首饰加工行业是贵金属废料产生的核心场景之一,珠宝店在日常经营、首饰加...
德明利:控股股东、董事长李虎自... 德明利公告称,公司控股股东、董事长李虎自愿承诺自2026年7月27日起12个月内,不以任何方式减持其...
十倍存储牛股德明利:董事长承诺... 7月24日盘后,德明利(001309.SZ)公告称,公司控股股东、董事长李虎自愿承诺自2026年7月...
外资公募二季度持仓披露 聚焦光... 观点网讯:近日,随着公募基金二季报披露收官,贝莱德、富达、路博迈、安联、联博等外商独资公募基金的二季...
政企合作、地方产业扶持为什么更... 各地政府与产业园区在大健康产业招商中,普遍优先扶持实体生产型企业,对轻资产招商、流量型项目基本不予扶...
原创 特... 近日美加贸易再起波澜,美国总统特朗普宣布对价值约 200 亿美元的加拿大进口商品加征 50% 关税,...
日本消费者大举购入珠宝,对冲日... 7月24日,财闻海外资讯消息,通胀高企、日元持续走弱,日本民众纷纷抢购奢侈珠宝,将其当作保值避险资产...
Anthropic杀入AI制药... 来源:智药局 从挖人才到建社群,Anthropic对AI制药领域的野心,实在太明显了。 近日,Ant...
小红书:启动人力系统复盘,邀请... 小红书上市的传闻,传了也有一个多月了吧。 市场迟迟蹲不到官方的回应,导致坊间一度是众说纷纭…结果没想...
“蛋白粉里没蛋白”:达开生物蛋... 图片来源:视觉中国 蓝鲸新闻7月24日讯(记者 代紫庭)当不少乳清蛋白粉一路涨到一罐数百元时,500...
Anthropic被曝9月上市... 智东西 编译 | 茄子 编辑 | 程茜 智东西7月24日消息,昨日,The Information援...
追加3亿美元投资扩大美国生产布... 7月24日, 百济神州(06160.HK)涨超4%,截至发稿,涨4.02%,报202.6港元,成交额...
段永平换仓了。。盯上这些科技股 全球科技股巨震之际,段永平开始换仓了。 段永平近日在社交平台回复网友时,透露了自己最新操作。 网友问...
原创 为... 为了不让中国“占便宜”,欧盟“放过了”俄罗斯。 日前,欧盟第21轮对俄制裁遭到希腊否决。无奈之下,欧...
圣邦股份跌3.32%,成交额1... 来源:新浪证券-红岸工作室 7月24日,圣邦股份跌3.32%,成交额11.29亿元,换手率1.86%...
新华鲜报丨企业年金个人账户明年... 无论你在哪里干、社会保险接着算,这句话在企业年金上有了新体现。 7月24日,《企业年金个人账户转移接...
原创 曹... 饭桌上最容易吵翻天的话题,除了催婚,大概就是买房。一个说手里有房心里不慌,一个说背上房贷就是给银行打...
盒马超盒算NB首进西南 成都6... 观点网讯:7月24日,盒马旗下平价社区超市品牌超盒算NB正式进入西南市场,首批6家门店在成都同步开业...