【华为机试题】 [Python] Boss的收入

题目

一个XX产品行销总公司,只有一个 boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级分销规定每个月,下级分销需要将自己的总收入(自己的+下级上交的)每满100元上交15元给自己的上级.
现给出一组分销的关系,和每个分销的收入,请找出 boss并计算出这 boss 的收入。比如:收入100元上交15元,收入199元(9元不够100)上交15元,收入200元,上交30元。分销关系和收入:分销id 上级分销的ld 收入
分销ID范围0…65535
收入范围:0…65535,单位元
提示: 输入的数据只存在1个 boss,不存在环路输入描述
第1行输入关系的总数量N
第2行开始,输入关系信息,格式:分销ID 上级分销ID 收入
输出描述
boss的ID 总收入
补充说明
给定的输入数据都是合法的,不存在重复示例1
输入
5
1 0 100
2 0 200
3 0 300
4 0 200
5 0 200
输出
0 150示例2:
输入
3
1 0 223
2 0 323
3 2 1203
输出
0 105
说明
2的最终收入等于323+1203/100*15=323+180
0的最终收入等于(323+180+ 223)/100*15=105

代码

from unittest.mock import patchclass SalaryStructure:# 首先我们构造一个数据结构,类似一个多叉树employees存储我们下级直属员工的信息def __init__(self, id, parent_id, salary):# 员工IDself.id = id# 上级IDself.parent_id = parent_id# 员工薪水self.salary = salary# 下级员工信息type = SalaryStructure()self.employees = []def __str__(self):return '%s %s %s %s' % (self.id,self.parent_id,self.salary,str(list(map(lambda x:x.salary, self.employees))))def __repr__(self):return '%s %s %s %s' % (self.id,self.parent_id,self.salary,str(list(map(lambda x:x.salary, self.employees))))class Solution:def func(self, lst):# 初始化Boss信息boss = SalaryStructure(0, -1, 0)# 哈希表存储员工映射信息p_dict = {0: boss}# 将员工的上下级关系绑定for i in lst:employee = SalaryStructure(i[0],i[1],i[2])p_dict[i[1]].employees.append(employee)p_dict.update({i[0]: employee})# 从最底层员工开始计算薪酬,逐级会计算到bossfor i in sorted(p_dict.keys(), reverse=True):p_dict[i].salary += sum((map(lambda x: x.salary, p_dict[i].employees))) // 100 * 15return p_dict# 测试用例
def input_args():# 对input输入参数进行打包,方便使用自动化输入模拟输入动作N = input("关系总数量N:")input_lst = []for i in range(int(N)):single_lst = input("共%s位,请输入第%s位(格式 id parent_id salary 如 1 0 100 :" % (str(N), str(i)))single_lst = single_lst.split(' ')input_lst.append([int(single_lst[0]), int(single_lst[1]), int(single_lst[2])])return N, input_lstmock_input_lst = [5,'1 0 100','2 0 200','3 0 300','4 0 400','5 0 500',
]mock_input_lst = [3,'1 0 223','2 0 323','3 2 1203',
]# 手动输入
# N, input_lst = input_args()
# 每次输入太麻烦了 模拟下手动输入
with patch('builtins.input', side_effect=mock_input_lst):N, input_lst = input_args()
s = Solution()
ans = s.func(input_lst)
print(ans)
print(' '.join(map(str,[0,ans[0].salary])))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/468259.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出WebSocket(实践聊天室demo)

文章目录 什么是WebSocket?WebSocket连接过程WebSocket与Http的区别重连机制完整代码使用方法心跳机制实现聊天室demo(基于Socket.io)参考文章、视频小广告~什么是WebSocket? WebSocket 是一种在单个TCP连接上进行全双工通信的协议(计算机网络应用层的协议) 在 WebSocket A…

[CKS] Audit Log Policy

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于audit policy的题目。 What’s the audit policy 使用K8s Audit Policy,管理员可以定义哪些操作需要被审计,包括创建、删除、更新和查看集群中的资源。审计记录包括操作的时…

【C++】map和set的介绍及使用

前言: map和 set 是 C STL(标准模板库)中的两种非常重要的容器,它们基于一种叫做平衡二叉搜索树(通常是红黑树)的数据结构来实现。在 C 中,map 是一个键值对容器,set 只存储唯一的键…

ai外呼机器人的作用有哪些?

ai外呼机器人具有极高的工作效率。日拨打成千上万通不是问题,同时,机器人还可以快速筛选潜在客户,将更多精力集中在有价值的客户身上,进一步提升营销效果。183-3601-7550 ai外呼机器人的作用: 1、搭建系统&#xff0c…

QT版发送邮件程序

简单的TCP邮箱程序 **教学与实践目的:**学会网络邮件发送的程序设计技术。 1.SMTP协议 邮件传输协议包括 SMTP(简单邮件传输协议,RFC821)及其扩充协议 MIME; 邮件接收协议包括 POP3 和功能更强大的 IMAP 协议。 服务…

汽车牌照识别系统的设计与仿真(论文+源码)

1设计原理 车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等,其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算…

vue通过iframe方式嵌套grafana图表

文章目录 前言一、iframe方式实现xxx.xxx.com拒绝连接登录不跳转Cookie 的SameSite问题解决不显示额外区域(kiosk1) 前言 我们的前端是vue实现的,监控图表是在grafana中的,需要在项目web页面直接显示grafana图表 一、iframe方式实现 xxx.xxx.com拒绝连…

学习笔记:黑马程序员JavaWeb开发教程(2024.11.9)

9.1 Mybatis-基础操作-环境准备 这里也没做,到时候写案例,如果需要环境配置什么的,可以看看这个 9.2 Mybatis-基础操作-删除 删除需要动态获取需要删除的id,使用方法传参,#{}的方式实现 在编写的delete方法中&a…

[Docker#3] LXC | 详解安装docker | docker的架构与生态

目录 1.LXC容器操作 安装LXC LXC容器操作步骤 2.理论 LXC 是什么? Docker 是什么 Docker 和虚拟机的区别 Docker 和 JVM 虚拟化的区别 Docker 版本 ⭕Docker 官方网站(建议收藏) Docker 架构 生活案例 Docker 生态 Docker 解决…

Spark的学习-02

Spark Standalone集群的安装 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接客、资源管理和任务 调度,等同于YARN中的ResourceManager 从:Worker:计算节点:负责利用自己…

白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】

很久没有写百度或者网站这块内容了,一是因为做百度网站朋友越来越少,不管是个人还是企业;二是百度上用户搜索与百度给到网站的流量都越来越少。 为什么想到今天又来写这个呢?因为上个月有个朋友来咨询我说网站百度排名全没了&…

一个怀旧,俺的第一个共享软件

今天网友说起了 福彩双色球的程序。俺就想起这个来了,这是俺的第一个共享软件,收入大约15000。在当时来说,速度算是最快的。有些地方用了汇编优化(题外话,最近俺看到新闻,FFmpeg的作者也用汇编优化 性能提升…

QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)

文章目录 QCustomPlot初识和基本效果图实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 QCustomPl…

96.【C语言】存储体系结构

目录 1.金字塔图 2.形象理解的图 3.分析 4.推荐阅读 1.金字塔图 2.形象理解的图 3.分析 缓存的大小<<内存的大小 缓存分三级:速度:一级>二级>三级 在95.【C语言】数据结构之双向链表的头插,头删,查找,中间插入,中间删除和销毁函数文章遗留了一个问题,缓存命…

智能合约在供应链金融中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 引言 智能合约概述 定义与原理 发展…

ODOO学习笔记(4):Odoo与SAP的主要区别是什么?

Odoo 和 SAP 都是知名的企业资源规划&#xff08;ERP&#xff09;软件&#xff0c;它们之间存在以下一些主要区别&#xff1a; Odoo与SAP的区别 一、功能特点 功能广度 Odoo&#xff1a;提供了一整套全面的业务应用程序&#xff0c;涵盖了销售、采购、库存管理、生产、会计、…

Leetcode 买卖股票的最佳时机 Ⅱ

使用贪心算法来解决此问题&#xff0c;通过在价格上涨的每一天买入并在第二天卖出的方式&#xff0c;累计所有上涨的利润&#xff0c;以实现最大收益。关键点是从第二天开始遍历&#xff0c;并且只要当前比前一天价格高&#xff0c;我们就在前一天买入然后第二天卖出去。下面是…

Unity常见问题合集(一)

PS&#xff1a;不定期更新...... 目录 &#xff08;1&#xff09;无法关闭自动编译&#xff08;Edit — Preference — General — Auto Refresh&#xff09; &#xff08;1&#xff09;无法关闭自动编译&#xff08;Edit — Preference — General — Auto Refresh&#xff0…

库打包工具 rollup

库打包工具 rollup 摘要 **概念&#xff1a;**rollup是一个模块化的打包工具 注&#xff1a;实际应用中&#xff0c;rollup更多是一个库打包工具 与Webpack的区别&#xff1a; 文件处理&#xff1a; rollup 更多专注于 JS 代码&#xff0c;并针对 ES Module 进行打包webpa…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析&#xff0c;特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力&#xff0c;以对象为为驱动的模型&#xff0c;主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…