#P2786. Keep the Customer Satisfied
Keep the Customer Satisfied
背景
西蒙与加芬克尔公司(SG Corp.)是一家大型钢铁制造企业,拥有数千名客户。让客户满意是管理者保罗和阿特的主要目标之一。
客户下达的订单由两个整数值构成:(所需钢铁量,单位为吨)和(交货期,转换为秒的日历时间)。若SG Corp.接受订单,则必须满足其交货期要求。换言之,接受订单后,相应钢铁量必须在交货期前生产完毕。当然,工厂同一时间仅能处理一个订单。
尽管生产流程颇为复杂,但可将其视为一条吞吐量恒定的生产线。以下假定生产吨钢铁恰好需要秒(即吞吐量为1)。工厂按每月生产计划运行。每月伊始,所有客户订单会被收集,保罗和阿特需确定下月生产周期内接受与拒绝的订单,随后制定生产计划。为让客户满意,他们希望将拒绝的订单总数降至最低。以下假定下月生产计划的起始时刻(即下月首日)对应时间点0。
霍奇森和摩尔已被任命为首席科学官,你需要协助他们计算最优方案,并为所有接受的订单制定生产时间表(包括开始时间与完成时间)。
小示例
考虑由6个订单组成的数据集。对于订单,表示所需钢铁量,为对应的交货期。
经手动验证可知:无法接受所有订单,且几乎不存在拒绝订单数少于2的解决方案。以下为最优方案:拒绝和,接受其余所有订单,并按如下方式安排生产:
注意生产线始终处于运行状态。
首行包含订单数量(部分测试用例中可达800000)。接下来行,每行描述一个订单,包含两个整数值:订单所需钢铁量(吨,小于1000)和交货期(秒,小于)。
需计算最优方案,并由程序输出接受的订单数量。
输出
你需要计算最优解决方案,程序需输出已接受的订单数量。
输入数据
6
7 15
8 20
6 8
4 9
3 21
5 22
输出数据
4
提示
Hogdson 和 Moore 的一些提示
Hogdson 和 Moore 声称,最好按照到期日的非递减顺序对接受的订单进行排序。
他们还声称有一个最优解,对于任意两个订单 Ju 和 Jv,其中 qu > qv 和 du < dv ,如果 Ju 被接受,那么 Jv 也被接受。
最后,Hogdson 和 Moore 建议您 “让客户满意”
让客户满意
Gee but it's great to be back home
Home is where I want to be.
I've been on the road so long my friend,
And if you came along
I know you couldn't disagree.
It's the same old story
Everywhere I go,
I get slandered,
Libeled,
I hear words I never heard
In the bible
And I'm on step ahead of the shoe shine
Two steps away from the county line
Just trying to keep my customers satisfied,
Satisfied.
Deputy sheriff said to me
Tell me what you come here for, boy.
You better get your bags and flee.
You're in trouble boy,
And you're heading into more.