话单发送

某核心网设备向计费网关发送话单(一个话单指一条通话记录的信息),发送规则如下:

  • 每个话单具有长度和优先级两个属性,优先级值越小表示优先级越高,高优先级的发送完,才能发送次优先级的。
  • 设备有一个承载规格,表示发送话单总容量的阈值,发送话单的总长度不能超过承载规格。

现给定设备的承载规格和待发送话单(长度和优先级)列表,请计算最多可以发送多少个话单。

解答要求

时间限制: C/C++ 1000ms, 其他语言:2000ms

内存限制: C/C++ 256MB, 其他语言:512MB

输入

第一行是正整数 cap ,表示设备的承载规格,取值范围:[1,10000]
第二行是正整数 num ,表示待发送话单的数量,取值范围:[0,100]
第三行 num 个整数,依次表示每个待发送话单的长度,每个值的范围:[0, 1000]
第四行 num 个整数,依次表示每个待发送话单的优先级,每个值的范围:[0,30]

第三行和第四行的数据一一对应,表示同一个话单的长度和优先级。

输出

输出一个整数,表示最多能发送话单的个数。

样例1
复制输入:
110 5 50 20 30 10 50 2 2 1 3 1
复制输出:
3
解释:
  • 首先尝试发送优先级为 1 的话单,长度分别是30和50,长度之和在承载规格范围内,优先级 1 的两个话单全部完成发送,剩余容量为30。
  • 接着尝试发送优先级为 2 的话单,长度20的被发送,剩余容量为10,长度50的无法发送。
  • 因优先级 2 的话单未发送完(仍剩余一条),优先级3的所有话单都无法发送。

所以,最多能发送的话单数为 3 。

提示

答题要求:您编写的代码需要符合CleanCode的要求(包括通用编码规范、安全编码规范和圈复杂度)

"""
Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
Description: 上机编程认证
Note: 缺省代码仅供参考,可自行决定使用、修改或删除
"""
from typing import List
import collections

class Solution:
    def get_max_send_num(self, cap: int, bill: List[int], pri: List[int]) -> int:
        # 在此添加你的代码
        if not bill:
            return 0
        dic = collections.defaultdict(list)
        number = 0
        for i in range(len(pri)):
            dic[pri[i]].append(bill[i])
        keys = sorted(list(dic.keys()))
        for p in keys:
            values = sorted(dic.get(p))
            if values[0] > cap:
                return number
            for j in values:
                if j > cap:
                    return number
                else:
                    cap -= j
                    number += 1
        return number

if __name__ == "__main__":
    cap = int(input())
    num = int(input())
    if num == 0:
        function = Solution()
        results = function.get_max_send_num(cap, [], [])
        print(results)
    else:
        bill = list(map(int, input().strip().split()))
        pri = list(map(int, input().strip().split()))
        function = Solution()
        results = function.get_max_send_num(cap, bill, pri)
        print(results)

 

posted @ 2023-04-19 15:05  song10  阅读(201)  评论(0)    收藏  举报