2024南昌市青少年信息学奥林匹克竞赛-提高组

问题 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 个门店之间或门
店与总仓之间的直线距离作为规划路径的判断依据。
2A 集团的面包车数量没有限制,但考虑到节约成本,需要用到最少的车辆送货。
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



赣ICP备20007335号-2