问题 A: 部门出勤率评比
返回比赛提交提交记录露一手!
编辑问题管理测试数据
题目描述
A 集团是一家全国性的多产品门类的大型集团,分为多个事业部,而且未来还可能扩编。
为了加强管理,人力资源需要对整个集团的部门进行梳理,每个部门都有一个管理人员。
比如: A 集团下面分:教育产品事业群、电子产品事业群、系统集成产品事业群。教育产
品事业群又分:教育江西分公司,教育武汉分公司;教育江西分公司又分教育南昌分公司,
每个分公司有一个经理;南昌下面又分南昌县片区、东湖片区等,每个片区都有一个主管。
为了照顾 C++初学者,降低编程难度,特将 A 集团所有子公司、部门名称简化为英文或拼
音命名,不会出现汉字命名的情况,并且每个部门都有一个部门编号,编号不会超过 10
万个。为了方便记录,人力资源一行记录一个部门,格式如下:
编号,部门名称,上级部门编号,管理人员职位等级编号
其中部门名称为英文字符,可以有空格;如果没有上级部门编号,则记为 0;员工职位等
级编号格式为: 0 普通员工、 1 主管、 2 经理、 3 总监 4 总经理,每行记录的属性都以逗号
","隔开。
例如: 1,A,0 编号为 1,部门名称为 A 集团,上级部门编号没有,所以为 0
人力资源一行记录一个员工,格式如下:
工号,员工姓名,所属部门编号,员工职位编号
其中员工姓名为英文字母,可以有空格,记录都以逗号","隔开
例如: 12082,Zhang San,9,0
其中, 12082 是工号, Zhang San 是姓名, 9 是部门编号 , 0 代表普通员工
人力资源记录员工考勤记录,一行一条打卡记录。打卡规则如下:
A 集团夏令时间(当年 6 月 1 日到 9 月 30 日): 上午是 8:30 - 12:00 , 下午是 13:30 -
18:00
A 集团冬令时间(当年 10 月 1 日,到次年 5 月 31 日),上午是 9:00 - 12:00 , 下午是
13:00 - 18:00
小王如果是夏令上班,假如是 8 月 20 日,一般会 8:30 以前到公司打卡,然后 12:00 -
13:30 之间打一次卡,最后 18:00 之后打一次卡。晚于 8:30 打卡属于迟到,早上早于
12:00 和 下午早于 18:00 属于早退,中午晚于 13:30 也属于迟到。
如果冬令上班,假如是 11 月 17 日,一般会 9:00 以前到公司打卡,然后 12:00- 13:00 之
间打一次卡,最后 18:00 之后打一次卡。晚于 9:00 打卡属于迟到,早上早于 12:00 和 下
午早于 18:00 属于早退,中午晚于 13:00 也属于迟到。
注:迟到早退精确到分钟, 8:30:20,不算迟到,但是 8:31:00 算迟到,同样 12:00:00 不
算早退,但 11:59:59 算早退
如果中间漏了一次打卡,属于旷工。
小王打卡由考勤系统自动记录,一次打卡记录一条数据,格式如下:
工号,打卡时间
例如:
7926,2024-11-17 8:54:34
前面的 7926 是工号, 2024-11-17 是 2024 年 11 月 17 日,后面的 8:54:34 是 8 点 54 分
34 秒
如果一天打卡 3 次,会有 3 条打卡记录,一行一条,如下:
7926,2024-11-17 8:54:34
7926,2024-11-17 12:01:22
7926,2024-11-17 18:05:22
输入
分 4 个部分,每个部分以 10 个等号隔开“==========”。
第一部分是 A 集团的组织机构,一行一个组织
第二部分是 A 集团的员工,一行一条记录
第三部分是 A 集团的员工打卡记录,一行一条记录
第四部分是一行 2 个整数,年 月,中间以空格隔开
一共 20 个测试点,部分分的取值范围:
1-5 A 集团员工数在 100 以内
6-10 A 集团员工数在 1000 以内
11-15 A 集团员工数在 10000 以内
15-20 A 集团员工数在 100000 以内
打卡记录数最多是员工数的 100 倍
输出
现在要求出给定年月, A 集团出勤率最高的 1 个基层最小部门作为最佳敬业团队,由集团
总裁亲自颁奖。
输出为: 1 行, 1 个整数或多个整数,多个整数,以空格隔开。整数代表部门编号, A 集团
给定年月出勤率最高的 1 个基层最小部门,如果出现多个部门出勤率相同,则人数最多的
拿奖,如果人数也相同,则并列拿奖,按部门编号升序(由小到大排列)。
样例输入 |
1,A,0 2,Tech,1 3,JiangxiTech,2 4,NanChangTech,3 5,JiujiangTech,3 6,DonghuTech,4 7,XihuTech,4 8,QingshanhuTech,4 9,ShenzhenTech,2 10,BeijingTech,2 ========== 1082,Zhang San,1,4 7001,Li Si,7,0 7926,Wang Er,7,0 1235,Zhang Lin,8,0 3235,Zhang San,8,0 1788,Luo Yan,4,2 1924,Li Dong,3,3 ========== 7001,2024-9-30 8:23:34 7926,2024-9-30 8:24:34 1235,2024-9-30 8:25:34 3235,2024-9-30 8:28:34 7001,2024-9-30 12:00:00 1235,2024-9-30 12:00:34 7926,2024-9-30 12:01:22 3235,2024-9-30 12:00:03 7001,2024-9-30 18:00:00 1235,2024-9-30 18:04:34 7926,2024-9-30 18:05:22 7001,2024-10-1 8:43:24 7926,2024-10-1 8:44:24 |
1235,2024-10-1 8:46:34 3235,2024-10-1 8:59:59 7001,2024-10-1 12:00:00 3235,2024-10-1 12:00:59 1235,2024-10-1 12:05:32 7926,2024-10-1 12:06:00 7001,2024-10-1 17:59:59 1235,2024-10-1 18:00:59 7926,2024-10-1 18:07:02 3235,2024-10-1 18:08:08 ========== 2024 10 |
样例输出 |
8 |
问题 B: 人力资源对工资的统计及排序
返回比赛提交提交记录露一手!
编辑问题管理测试数据
题目描述
A 集团是一家全国性的多产品门类的大型集团,分为多个事业部,而且未来还可能扩编。
为了加强管理,人力资源需要对整个集团的部门进行梳理,每个部门都有一个管理人员。
比如: A 集团下面分:教育产品事业群、电子产品事业群、系统集成产品事业群。教育产
品事业群又分:教育江西分公司,教育武汉分公司;教育江西分公司又分教育南昌分公司,
每个分公司有一个经理;南昌下面又分南昌县片区、东湖片区等,每个片区都有一个主管。
为了照顾 C++初学者,降低编程难度,特将 A 集团所有子公司、部门名称简化为英文或拼
音命名,不会出现汉字命名的情况,并且每个部门都有一个部门编号,编号不会超过 10
万个。为了方便记录,人力资源一行记录一个部门,格式如下:
编号,部门名称,上级部门编号
其中部门名称为连续英文字符,如果没有上级部门编号,则记为 0,每行记录的属性都以
逗号","隔开
例如: 1 A 0 编号为 1,部门名称为 A 集团,上级部门编号没有,所以为 0
人力资源一行记录一个员工,格式如下:
工号,员工姓名,所属部门编号,员工职位编号
其中员工姓名为了简化,都为英文字母,会包含空格,记录都以逗号","隔开,员工职位等级
编号格式为: 0 普通员工、 1 主管、 2 经理、 3 总监 4 总经理,
例如: 12082 ZhangSan 9 0
其中, 12082 是工号, ZhangSan 是姓名, 9 是部门编号 , 0 代表普通员工
人力资源记录员工工资,一行一个员工一个月的工资情况,格式如下:
工号,工资,年月 , 其中工资为浮点数,精确到小数点后 2 位,年月为:年-月,是标准的时
间记录法
例如: 12081,6920.00,2024-11
输入
现给出一组数据,分 4 个部分,每个部分以 10 个等号隔开“==========”。
第一部分是 A 集团的组织机构,一行一个组织
第二部分是 A 集团的员工,一行一条记录
第三部分是 A 集团的员工工资,一行一条记录
第四部分是 1 行 3 个整数,年 月 页码,中间以空格隔开
一共 20 个测试点,部分分的取值范围:
1-5 A 集团员工数在 100 以内
6-10 A 集团员工数在 1000 以内
11-15 A 集团员工数在 10000 以内
15-18 A 集团员工数在 100000 以内
19-20 A 集团员工数在 1000000 以内
一个员工最多 12 条工资记录数
输出
要求出:某年某月所有最小部门的员工数、总工资和平均工资,支持分页显示,一页 10
条记录。当页码小于 1 显示第一页数据,当页码大于总页码显示最后一页数据。输出排序
以总工资降序排序(总工资由大到小排序)。
输出为 2 部分:每部分以 10 个等号隔开“==========”。
第一部分一行数据,格式为:记录总条数 当前实际页码 总金额 ,以空格隔开,其中,记
录总条数是最小部门的个数,当前页码是实际页码,也就是输入为 0 是第一页,输入超过
最大页码为实际最大页码,总金额是所有最小部门工资之和,包括最小部门领导的工资,
但不包括上级领导的工资。
第二部分是:所有最小部门的工资情况列表,一行一个,格式为:
部门编号 员工数 总工资 平均工资
中间以空格隔开,其中总工资和平均工资精确到小数点后 2 位。员工数为最小部门员工数
包括最小部门领导在内,总工资为最小部门员工工资汇总(包括最小部门领导工资) ,平
均工资是前面的总工资除以员工数。
输出排序以最小部门总工资降序排序(总工资由大到小排序)。
样例输入 |
1,A,0 2,Tech,1 3,JiangxiTech,2 |
4,NanChangTech,3 5,JiujiangTech,3 6,DonghuTech,4 7,XihuTech,4 8,QingshanhuTech,4 9,ShenzhenTech,2 10,BeijingTech,2 ========== 10082,Zhang San,1,4 23211,Li Si,7,0 23233,Wang Er,7,0 23122,Zhang Lin,8,0 17288,Luo Yan,4,2 10924,Li Dong,3,3 ========== 10924,6920.00,2024-11 17288,6666.66,2024-11 23122,7134.36,2024-11 23233,6134.65,2024-11 23211,7090.16,2024-11 10082,5999.16,2024-11 ========== 2024 11 3 |
样例输出 |
2 1 20359.17 ========== 7 2 13224.81 6612.41 8 1 7134.36 7134.36 |
问题 C: 南昌市最佳配送路线
返回比赛提交提交记录露一手!
编辑问题管理测试数据
题目描述
A 集团有一项业务是给各个网点送货, A 集团在南昌市有很多个线下网点,每天网点工
作人员会在下班前 30 分钟把缺货清单发给南昌分公司,由南昌分公司统一配送。其中网
点不固定,每月都会新开一批,也可能会关闭一批,看经营情况。每月初, 南昌分公司客
服人员都会把所有网点的信息输入系统,网点位置从百度地图标记后提取经纬度,然后输
入系统。每天根据各个网点发出的补货清单,系统会自动算出送货车辆的最佳送货路线,
送货过程中,会把所有下单的网点货物都及时送达。整套系统的数据库分 3 张核心表:门
店表、送货清单表、日进货门店表。考虑到 C++比赛,不给出送货清单表的样例数据,只
处理:门店表和日进货门店表数据。现在将这 2 张表数据导出 excel 并简化,每张表一条
记录一行,每条记录的字段以逗号","分割。数据格式例如:
门店表:
字段名: 门店 ID,门店经度,门店纬度
日进货门店表:
字段名:门店 ID,进货日期,日总进货量
初期, A 集团只有一辆配送车辆, A 集团在南昌市的百度地图的总仓坐标是:
115.946274,28.679341
现在在百度地图上取 2 个点,
一个彭家桥地铁站,经纬度是: 115.939631,28.680414
一个是谢家村地铁站,经纬度是: 115.947302,28.680414
彭家桥到谢家村的直线距离大概是: 738 米
如图:
由于是南昌市配送,不考虑地球角度,可以近似根据勾股定律结合 2 点实际距离大概算出
每个门店以及门店到总仓的距离。
由于是 A 集团项目运营初期,门店补货量不大,一辆车每天足够装完全部网点的补货,不
需要考虑日总进货量。为了简化计算,南昌市任意 2 个门店都有路相连,不考虑修路和堵
车情况,可以用 2 个门店之间或门店与总仓之间的直线距离作为规划路径的判断依据。
输入
输入分 3 个部分,每个部分以 10 个等号“==========”分割
第一部分:门店数据,一行一个门店,以逗号分割
门店 ID,门店经度,门店纬度
第二部分:日进货门店表,一行一条数据,以逗号分割
门店 ID,进货日期,日总进货量(公斤 KG)
第三部分:年月日,为标准日期格式,中间以横杠隔开
一共 20 个测试点,部分分的取值范围:
1-5 A 集团南昌市网点数在 10 以内
6-10 A 集团南昌市网点数在 100 以内
11-15 A 集团南昌市网点数在 500 以内
15-20 A 集团南昌市网点数在 1000 以内
输出
输出为一行数据,某年月日进货门店第二天的最佳送货顺序,总仓汽车经过每个门店并回
到总仓的推荐配送路径,配送路径为总仓按顺序经过的门店 ID,总仓 ID 为 0,每个门店
ID 以逗号隔开。
样例输入 |
1,115.966252,28.679626 2,116.000603,28.679373 3,116.028774,28.678866 4,116.061976,28.674556 5,116.088997,28.672528 ========== 1,2024-11-17,30 2,2024-11-17,20 4,2024-11-17,12 5,2024-11-17,10 1,2024-11-16,31 2,2024-11-16,23 3,2024-11-16,15 4,2024-11-16,13 5,2024-11-16,11 1,2024-11-15,36 3,2024-11-15,14 4,2024-11-15,13 5,2024-11-15,12 ========== 2024-11-17 |
样例输出 |
0,1,2,4,5,0 |
问题 D: 南昌市多车最佳配送路线
返回比赛提交提交记录露一手!
编辑问题管理测试数据
题目描述
A 集团有一项业务是给各个网点送货, A 集团在南昌市有很多个线下网点,每天网点工
作人员会在下班前 30 分钟把缺货清单发给南昌分公司,由南昌分公司统一配送。其中网
点不固定,每月都会新开一批,也可能会关闭一批,看经营情况。每月初,南昌分公司客
服人员都会把所有网点的信息输入系统,网点位置从百度地图标记后提取经纬度,然后输
入系统。每天根据各个网点发出的补货清单,系统会自动算出送货车辆的最佳送货路线,
送货过程中,会把所有下单的网点货物都及时送达。整套系统的数据库分 3 张核心表:门
店表、送货清单表、日进货门店表。考虑到 C++比赛,不给出送货清单表的样例数据,只
处理:门店表和日进货门店表数据。现在将这 2 张表数据导出 excel 并简化,每张表一条
记录一行,每条记录的字段以逗号","分割。数据格式例如:
门店表:
字段名: 门店 ID,门店经度,门店纬度
日进货门店表:
字段名:门店 ID,进货日期,日总进货量
A 集团有多辆配送车辆,都停放在总仓。 A 集团在南昌市的百度地图的总仓坐标是:
115.946274,28.679341
现在在百度地图上取 2 个点,
一个彭家桥地铁站,经纬度是: 115.939631,28.680414
一个是谢家村地铁站,经纬度是: 115.947302,28.680414
彭家桥到谢家村的直线距离大概是: 738 米
如图:
由于是南昌市配送,不考虑地球角度,可以近似根据勾股定律结合 2 点实际距离大概算出
每个门店以及门店到总仓的距离。
随着 A 集团线下门店数量大增,一辆汽车已经无法满足 A 集团的送货需求。 A 集团在市内
采用面包车送货,面包车安全载货量为 500 公斤。为了简化计算,特做以下假设:
1、南昌市任意 2 个门店都有路相连,不考虑修路和堵车情况,可以用 2 个门店之间或门
店与总仓之间的直线距离作为规划路径的判断依据。
2、 A 集团的面包车数量没有限制,但考虑到节约成本,需要用到最少的车辆送货。
3、只要发车送货,不论多晚,门店都会安排人员收货, 不会出现当天送不完货的情况。
输入
输入分 3 个部分,每个部分以 10 个等号“==========”分割
第一部分:门店数据,一行一个门店,以逗号分割
门店 ID,门店经度,门店纬度
第二部分:日进货门店表,一行一条数据,以逗号分割
门店 ID,进货日期,日总进货量(公斤 KG)
第三部分:年月日,为标准日期格式,中间以横杠隔开
一共 20 个测试点,部分分的取值范围:
1-5 A 集团南昌市网点数在 10 以内
6-10 A 集团南昌市网点数在 100 以内
11-15 A 集团南昌市网点数在 500 以内
15-20 A 集团南昌市网点数在 1000 以内
输出
输出为多行数据,
第一行: A 集团某年月日进货门店第二天的派车数 N
第 2 行到 N+1 行:某年月日进货门店第二天单辆车的最佳送货线路,总仓汽车经过每个门
店并回到总仓的推荐配送路径,配送路径为总仓按顺序经过的门店 ID,总仓 ID 为 0,每个
门店 ID 以逗号隔开。
第 2 行到 N+1 行的排序规则为:每条线路第一个门店与总仓的直线距离升序,也就是每条
线路第一个门店与总仓越近越排前面。
样例输入 |
1,115.966252,28.679626 2,116.000603,28.679373 3,116.028774,28.678866 4,116.061976,28.674556 5,116.088997,28.672528 6,115.926296,28.680387 7,115.86133,28.671006 8,115.8093,28.689766 9,115.786879,28.700412 10,115.729675,28.713592 ========== 1,2024-11-17,182 3,2024-11-17,85 4,2024-11-17,89 5,2024-11-17,123 6,2024-11-17,81 7,2024-11-17,70 8,2024-11-17,75 9,2024-11-17,112 10,2024-11-17,153 1,2024-11-16,82 |
3,2024-11-16,55 4,2024-11-16,89 5,2024-11-16,123 6,2024-11-16,81 7,2024-11-16,70 8,2024-11-16,75 9,2024-11-16,202 10,2024-11-16,153 ========== 2024-11-17 |
样例输出 |
2 0,6,7,8,9,10,0 0,1,3,4,5,0 |