观光公交
成绩 | 100 | 开启时间 | 2020年02月20日 星期四 20:25 |
折扣 | 0.8 | 折扣时间 | 2020年02月20日 星期四 20:25 |
允许迟交 | 是 | 关闭时间 | 2020年02月20日 星期四 20:25 |
输入文件 | bus.in | 输出文件 | bus.out |
【题目描述】观光公交(bus)
Y市拥有n个美丽的景点,为此特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第0分钟出现在1号景点,随后依次前往2、3、4、……、n号景点。从第i号景点开到第i+1号景点需要Di分钟。任意时刻,公交车只能往前开,或在景点处等待。
设共有m个游客,每位游客需要乘车1次从一个景点到达另一个景点,第i位游客在Ti分钟来到景点Ai,希望乘车前往景点 Bi(Ai<Bi)。为了使所有乘客都能顺利到达目的地,公交车在每站都必须等待需要从该景点出发的所有乘客都上车后才能出发开往下一景点。
假设乘客上下车不需要时间,一个乘客的旅行时间,等于他到达目的地的时刻减去他来到出发景点的时刻。因为只有一辆观光车,有时候还要停下来等其他乘客,乘客们纷纷抱怨旅行时间太长了,于是聪明的司机给公交车安装了k个氮气加速器,每使用一个加速器,可以使其中一个Di 减1。对于同一个Di可以重复使用加速器,但是必须保证使用后Di大于等于0。
那么司机该如何安排使用加速器,才能使所有乘客的旅行时间总和最小?
【输入格式】
输入第1行是3个整数n,m,k,每两个整数之间用一个空格隔开。分别表示景点数、乘客数和氮气加速器个数。
第2行是n-1个整数,每两个整数之间用一个空格隔开,第i个数表示从第i个景点开往第i+1个景点所需要的时间即Di。
第3行至m+2行每行3个整数Ti,Ai,Bi,第i+2 行表示第i位乘客来到出发景点的时刻,出发的景点编号和到达的景点编号。
【输出格式】
输出共一行,包含一个整数,表示最小的总旅行时间。
【输入样例】
3 3 2
1 4
0 1 3
1 1 2
5 2 3
【输出样例】
10
【样例说明】
对 D2使用2个加速器,从2号景点到3号景点时间变为2分钟。
公交车在第1分钟从1号景点出发,第2分钟到达2号景点,第5分钟从2号景点出发,第7分钟到达3号景点。
第1个旅客旅行时间7-0=7分钟,第2个旅客旅行时间2-1=1分钟,第3个旅客旅行时间7-5=2分钟,总时间7+1+2=10分钟。
【数据范围】
对于100%的数据,1≤n≤1 000,1≤m≤10 000,0≤k≤100 000,0≤Di≤100,0≤Ti≤100 000。