华为OD机考双机位C卷 - Wonderland游乐园(Java & Python & JS & GO & C++ & C)
Wonderland游乐园
2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:
- 情况1:同1个告警是否存在多个主告警。
- 情况2:输入的主次关联关系中是否存在环路。
输入描述
每个主次关联关系单独一行输入,输入形式为"主告警 次告警"。
例如
25aba 68vup
25aba为主告警,68vup为次告警,以空格分割,主次告警的格式都为小写字母+数字组成,1<=告警名称长度 <= 256。
输出描述
输出要求为指定格式字符串:
- 如果给定的主次关联关系中,同一个告警关联多个主告警,输出格式为[1001,(b,d,e)]表示告警b有多个主告警,按字母序排序。
- 如果给定的主次关联关系中存在环路,输出格式为[1002,cycle]
- 如果上述两种异常情况均不存在,输出[1003,Verified]
- 如果主次告警关系中,同时存在1-2中多种情况,输出检查码最小的结果
用例
| 输入 | 5 14 30 100 1 3 5 20 21 200 202 230 |
|---|---|
| 输出 | 40 |
| 说明 | 根据售票价格数组和游玩日期数组给出的信息,发现每次去玩的时候买一张一日票是最省钱的,所以小王会卖8张一日票,每张5元,最低花费是40元 |
解题思路
我们可以使用动态规划。核心思想是为每个游玩日期计算最低消费成本,并存储这些结果以供后续日期使用。具体步骤如下:
- 创建一个数组
dp以存储直至每一天的最低消费。数组的长度为365天加1(因为数组是从0开始的,而天数是从1开始的)。 - 初始化
dp[0] = 0,因为在开始之前没有任何消费。 - 遍历每一天,对于每一天,我们有几种选择:
- 如果这一天不在计划游玩日期中,则这一天的消费与前一天相同,即
dp[i] = dp[i-1]。 - 如果这一天在计划游玩日期中,我们需要考虑三种票价中的最低消费:
- 一日票的消费是:
dp[i-1] + costs[0]。 - 三日票的消费是:
dp[max(i-3, 0)] + costs[1]。 - 周票的消费是:
dp[max(i-7, 0)] + costs[2]。 - 月票的消费是:
dp[max(i-30, 0)] + costs[3]。
- 一日票的消费是:
- 对于这一天,选择上述四种情况中的最小值作为
dp[i]的值。
- 如果这一天不在计划游玩日期中,则这一天的消费与前一天相同,即
- 最终
dp[365]即为所求的最低消费。
浙公网安备 33010602011771号