#P17199. [KOI 2026 #2] 工厂
[KOI 2026 #2] 工厂
题目描述
某工厂计划从第 天夜间运行到第 天夜间。工厂每天的工作分为白天时段和夜间时段。按时间顺序,共分为第 天夜间、第 天白天、第 天夜间、第 天白天、第 天夜间、……、第 天白天、第 天夜间,共 个时段。每个白天进行日间生产,每个夜间进行夜间警戒。
为了使工厂运行,需要从 名应聘者中选出并雇用若干名员工。第 ()名应聘者的熟练度为 ,贡献度为 ,且所有应聘者的熟练度互不相同。若雇用第 名应聘者,则该员工会在第 天夜间、第 天白天和第 天夜间这三个时段工作,并获得基本工资 。也就是说,每名被雇用的员工会参加两次夜间警戒和一次日间生产。
每个时段的工作按如下方式进行:将该时段工作的所有员工按照熟练度从小到大排成一列,再从队首开始依次两两配对。也就是说,如果共有 名员工,则对于每个整数 (),队列中的第 人与第 人组成一组。
所有工作都必须以两人一组的形式进行。因此,必须选择员工,使得每个时段工作的人数均为偶数。允许某个时段没有员工工作,此时该时段不会进行任何工作。
每一组员工会根据所执行的工作产生如下结果:
- 日间生产:白天,每组员工运行一条生产线制造产品,并改变工厂的总生产利润。具体而言,若熟练度满足 的第 、第 名应聘者组成一组,则总生产利润增加 。请注意,这个值可能为负数。
- 夜间警戒:夜间,每组员工巡查工厂内部,并获得夜间补贴。具体而言,若熟练度满足 的第 、第 名应聘者组成一组,则两人合计获得 的夜间补贴。
工厂开始运行前(第 天夜间之前),工厂的总生产利润为 。
工厂支付的总工资等于所有被雇用员工的基本工资之和,加上所有夜间支付的夜间补贴之和。
给定 名应聘者的信息,请合理选择要雇用的员工,求可获得的“(总生产利润)(支付的总工资)”的最大值,并输出此时雇用的员工名单。
输入格式
第一行依次给出两个以空格分隔的整数 和 。
接下来的 行给出 名应聘者的信息。其中第 ()行依次给出四个以空格分隔的整数 ,表示第 名应聘者的信息。
输出格式
第一行输出“(总生产利润)(支付的总工资)”的最大值。
第二行输出要雇用的员工人数 。
第三行以任意顺序输出 名要雇用员工的编号,编号之间以空格分隔。当 时,可以输出空行,也可以不输出这一行。
如果存在多种可行输出,输出其中任意一种均视为正确。
6 2
21 0 1 1
13 25 0 2
22 20 3 2
20 5 2 2
4 23 0 2
25 16 8 1
7
4
1 3 4 6
5 2
40 23 10 1
59 22 2 2
32 7 10 2
52 30 0 1
38 10 3 1
0
0
12 3
6 19 4 2
32 0 1 3
12 0 4 3
25 7 0 2
35 15 5 1
28 25 5 2
19 27 3 3
30 13 3 2
1 24 5 3
20 11 0 2
2 1 5 2
24 28 3 2
20
8
1 3 4 6 7 10 11 12
提示
样例 1 解释
雇用在第 天白天工作的第 、第 名应聘者,以及在第 天白天工作的第 、第 名应聘者是最优的。
- 第 天白天,第 名和第 名员工组成一组,总生产利润增加 。
- 第 天白天,第 名和第 名员工组成一组,总生产利润增加 。
因此,总生产利润为 。
- 第 天夜间,第 名和第 名员工组成一组,支付 的夜间补贴。
- 第 天夜间,四名员工全部工作。按熟练度顺序排列为第 名()、第 名()、第 名()、第 名()。第 名与第 名、第 名与第 名分别组成一组。该夜支付的夜间补贴为 。
- 第 天夜间,第 名和第 名员工组成一组,支付 的夜间补贴。
因此,夜间补贴总额为 。
支付的总工资为基本工资 加夜间补贴 ,共计 ;最终“(总生产利润)(支付的总工资)”为 。
请注意,在此样例中,第 天白天和第 天夜间的分组并不相同。
样例 2 解释
不雇用任何人是最优的。
限制条件
- 给出的所有数均为整数。
- 对于每个整数 (),。
- 对于每个整数 (),。
- 对于每个整数 (),。
- 对于每个整数 (),。
- 两两不同。
子任务
- ( 分)。
- ( 分)。
- ( 分)。
- ( 分)对于每个整数 (),满足 的应聘者不超过 名。
- ( 分)没有额外限制。