公司要求从两类培训(业务类、管理类)各选一场,顺序任意,且每场都可在“最早开始时间或之后”任意时刻启动,持续给定时长。
设一场培训以最早时间 s 开始并持续 d,若在时刻 t(≥s) 启动,则在 t+d 结束。显然不需要把第一场延后:第一场越早结束,第二场 max(第一场结束, 第二场最早开始)+第二场时长 只会不增。
把每场的“若第一场就选它且按最早时间开始时的结束时刻”记为:
i 个:Bend[i] = Bstart[i] + Bdur[i]j 个:Mend[j] = Mstart[j] + Mdur[j]公司为提升员工综合能力,提供了两种不同类别的主题培训:业务类主题培训和管理类主题培训,并要求每位员工必须从这两类培训中各选择恰好一门参加,具体顺序可自由安排。
业务类主题培训有多个场次,其中businessstartTime[i]表示第i个业务类培训场次的最早可开始时间, businessDuration[i]表示该场次的持续时长。
管理类主题培训也有多个场次,其中managementstartTime[j]表示第j个管理类培训场次的最早可开始时间,managementDuration[j]表示该场次的持续时长。
培训的具体规则如下:
1.员工可在培训场次的最早开始时间或之后的任意时间开始参加该场次。
2.若某场培训在时间t开始,那么它将在t+该场次持续时长时结束。
3.完成一个培训后,员工可以立即参加下一个培训(若下一个已到最早开始时间),也可等待下一个到最早 开始时间后再参加。
请编写代码返回员工完成这两门培训的最早可能结束时间。
第一行输入一个整数,表示businessStartTime.length。
第二行输入businessstartTime.length个整数,表示businessstartTime
第三行输入businessstartTime.length个整数,表示businessDuration
第四行输入一个整数,表示managementstartTime.length。
第五行输入managementstartTime.length个整数,表示managementstartTime。
第六行输入managementstartTime.length个整数,表示managementDuration
输出一个整数,表示员工完成这两门培训的最早可能结束时间。
输入
2
2 8
4 1
1
6
3
输出
9
1<=n,m<=5∗104
businessStartTime.length==businessDuration.length==n
managementstartTime.length==managementDuration.length==m
1<=businessStartTime[i],businessDuration[i],managementstartTime[j],managementDuration[j]<=105