思路:贪心
根据题意,全包服务和单独分配任务是独立的,所以我们需要比较这两种方式哪种花费更低。
对于单独分配,每项任务一定选择费用更低的团队,所以取 min 即可。
时间复杂度:O(n)
题目内容
项目经理需要完成 n 项独立任务。对于第 i 项任务,如果分配给团队甲,费用为 xi;如果分配给团队乙,费用为 yi。
此外,一家外包公司可以提供全包服务,一次性处理全部 n 项任务,固定总价为 M。
项目经理可以自由为每项任务选择团队甲或团队乙,也可以选择将全部任务统一外包。
请计算完成所有任务的最小总花费。
约束:任务数量 n 不超过 105;每个任务的单独报价 xi 和 yi 均为不超过 104 的正整数;全包价格 M 不超过 109。所有输入均为整数。
输入描述
第一行包含两个整数 n 和 M,分别表示任务数量和全包价格。
第二行包含 n 个整数 x1,x2,…,xn,表示团队甲对每项任务的报价。
第三行包含 n 个整数 y1,y2,…,yn,表示团队乙对每项任务的报价。
输出描述
输出一个整数,表示完成所有任务的最小总花费。
样例1
输入
3 10
5 3 8
2 6 4
输出
9
说明
对于每项任务,分别在两个团队中选择较低报价:
- 任务 1:甲报价
5,乙报价 2,选择乙,花费 2;
- 任务 2:甲报价
3,乙报价 6,选择甲,花费 3;
- 任务 3:甲报价
8,乙报价 4,选择乙,花费 4。
因此,不外包时最低总花费为 2+3+4=9。
全包价格 M=10,由于 9<10,所以最小总花费为 9。
样例2
输入
3 8
5 3 8
2 6 4
输出
8
说明
与上例相同的任务报价:每项任务选较低报价的总花费为 2+3+4=9。
但此时全包价格 M=8,因为 8<9,直接选择外包更划算。
因此最小总花费为 8。
样例3
输入
1 100
50
60
输出
50
说明
只有一项任务。团队甲报价 50,团队乙报价 60,较低花费为 50。全包价格 M=100。
比较 min(50,100)=50,故最小总花费为 50。
样例4
输入
1 10
50
60
输出
10
说明
只有一项任务,单独委派的最低花费为 min(50,60)=50。
全包价格 M=10 更低,因此选择外包,最小总花费为 10。