华为OD机试真题C卷-篇5

小朋友来自多少小区

在这里插入图片描述
在这里插入图片描述


 
nums = [int(x) for x in input().split(" ")]
#index为报告的结果,zones[index]为报告相同结果的总人数
zones = [0 for x in range(1000)]
count = 0
 
i=0
while(True):
  if(i>=len(nums)):
    break
  else:
    zones[nums[i]]+=1
  
  i+=1
 
 
for j in range(1000):
    if (zones[i] <= 0):
      continue
    else:
      total = math.ceil(zones[j] / (j+1));
      count += total * (j+1);
print(count);

 

堆内存申请

在这里插入图片描述
在这里插入图片描述

 
 
n = int(input())
memorys = []
while (True) :
    try:
        nums = [int(x) for x in input().split(" ")]
        memorys.append([nums[0], nums[0]+nums[1]- 1])
    except:
        break
 
memorys.sort()
length = len(memorys)
flag = 0
for i in range(length):
    x = memorys[i][0]
    y = memorys[i][1]
    if (not ((x >= 0 and y >= 0 and x < 100 and y < 100 and x <= y) and 
        (not (i > 0 and x <= memorys[i-1][1])))) :
        flag = 1  
        break  
    
 
 
if (flag!=1) :
    offset = -1
    max_distance = 100
    start = memorys[0][0]
    if (start >= n and start < max_distance + n) :
        offset = 0
        max_distance = start - n
    
    i=1
    while(True):
        if(i>=length):
            break
        else :
            current = memorys[i][0]
            before = memorys[i-1][1]
            if (current - before > n):
                if(current - before < max_distance + n) :
                    offset = before + 1
                    max_distance = current - before - n
                    break
        i+=1
 
    end = memorys[length - 1][1]
    if (end<=99-n and end > 99-n-max_distance) :
        offset = end + 1
    
    print(offset)
else:
    print(-1)

 

跳格子3

在这里插入图片描述


 
n =int(input())
nums = [int(x) for x in input().split(" ")]
k = int(input())
queue = [[0 for i in range(2)] for j in range(n)]
cache =[0 for i in range(n)]
cache[0] = nums[0]
queue[0][0] = 0
queue[0][1] = cache[0]
index1 = 0
index2 = 1
 
i=1
while(True):
    if(i>=n):
        break
    else :
        while(index1<index2):
            if(queue[index1][0] < i - k):
                index1 +=1
            else :
                break
            
        
        cache[i] = nums[i] + queue[index1][1]
 
        while(index1<index2):
            if(queue[index1][1] <= cache[i]):
                index1 +=1
            else :
                break
        queue[index2][0] = i
        queue[index2][1] = cache[i]
        index2+=1
    
    i+=1
 
print(cache[n - 1])

 

测试用例执行计划

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

import functools
import sys
import copy
import re
import math
import queue
 
 
nums = [int(x) for x in input().split(" ")]
n = nums[0]
m = nums[1]
prioritys = []
for i in range(n):
    prioritys.append(int(input()))
 
list_a =[]
for i in range(m):
    nums1 = [int(x) for x in input().split(" ")]
    total = 0 
    for j in range(len(nums1)):
        total += prioritys[nums1[j]-1] 
    
    list_a.append([i + 1, total])
 
 
list_a =sorted(list_a, key=lambda x : (-x[1],x[0]))
 
for i in range(len(list_a)):
    print(list_a[i][0])

相关推荐

  1. 2024华为OD-机场航班调度-C++(CD)

    2024-02-21 14:30:03       10 阅读
  2. 2024华为OD-出租车计费-C++(CD)

    2024-02-21 14:30:03       9 阅读
  3. 华为OD-攀登者1-2023年OD统一考试(C

    2024-02-21 14:30:03       49 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 14:30:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 14:30:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 14:30:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 14:30:03       18 阅读

热门阅读

  1. GET和POST两种HTTP 方法比较

    2024-02-21 14:30:03       33 阅读
  2. pytorch使用文档

    2024-02-21 14:30:03       23 阅读
  3. 代码随想录算法训练营第五十一天| 139.单词拆分

    2024-02-21 14:30:03       32 阅读
  4. Selenium Grid4.0 - 多台计算机上并行运行

    2024-02-21 14:30:03       34 阅读