题目名称 632. [NOIP 2011]观光公交
输入输出 bus.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 20
题目来源 Gravatarcqw 于2011-11-29加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 贪心 递推 模拟
分享题解
通过:194, 提交:511, 通过率:37.96%
GravatarAsm.Def 100 0.014 s 0.34 MiB C++
GravatarDissolute丶Tokgo 100 0.014 s 0.48 MiB C++
Gravatar隨風巽 100 0.021 s 0.43 MiB C++
GravatarQILIN 100 0.028 s 0.49 MiB C++
Gravatarlingyixiaoyao 100 0.035 s 1.48 MiB C++
GravatarQWERTIer 100 0.035 s 2.69 MiB C++
Gravatarlingyixiaoyao 100 0.037 s 1.48 MiB C++
Gravatar赵赵赵 100 0.041 s 0.47 MiB Pascal
Gravatar赵赵赵 100 0.041 s 0.47 MiB Pascal
Gravatar王者自由 100 0.041 s 0.47 MiB Pascal
本题关联比赛
防止颓废的小练习v0.2
关于 观光公交 的近10条评论(全部评论)
学会了如何使用oalj 1Ahh
GravatarTARDIS
2017-09-20 16:18 11楼
贪心:尽量不等人
GravatarShirry
2017-09-04 17:18 10楼
Gravatar面对疾风吧 疾风 疾风吧
2016-11-07 16:42 9楼
照着题解都W两边
GravatarHzoi_Go灬Fire
2016-11-07 16:39 8楼
总之是get不到贪心的点
Gravatar半汪
2016-11-07 13:52 7楼
我永远都不知道贪心到底是个神马东东……总之就是奇奇怪怪的算法,自己打死想不出来的那种……
Gravatar浮生随想
2016-10-24 21:42 6楼
回复 @Asm.Def :
大神请学会使用 https://gist.github.com
GravatarBillAlen
2016-10-08 20:48 5楼
O(nk)水过,真是数据弱。手残挂了一次QAQ。
GravatarFoolMike
2016-09-20 21:54 4楼
看错了n的范围想用线段树优化,写maxn的时候才发现是1e3 - -
GravatarFmuckss
2016-09-08 14:13 3楼
Gravatarforever
2015-10-17 17:01 2楼

632. [NOIP 2011]观光公交

★★★   输入文件:bus.in   输出文件:bus.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

风景迷人的小城 $Y$ 市,拥有 $n$ 个美丽的景点。由于慕名而来的游客越来越多,$Y$ 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第 $0$ 分钟出现在 $1$ 号景点,随后依次前往 $2、3、4……n$ 号景点。从第 $i$ 号景点开到第 $i+1$ 号景点需要 $D_i$ 分钟。

任意时刻,公交车只能往前开,或在景点处等待。

设共有 $m$ 个游客,每位游客需要乘车 $1$ 次从一个景点到达另一个景点,第 $i$ 位游客在 $T_i$ 分钟来到景点 $A_i$,希望乘车前往景点 $B_i(A_i<B_i)$。为了使所有乘客都能顺利到达目的地,公交车在每站都必须等待需要从该景点出发的所有乘客都上车后才能出发开往下一景点

假设乘客上下车不需要时间。

一个乘客的旅行时间,等于他到达目的地的时刻减去他来到出发地的时刻。因为只有一辆观光车,有时候还要停下来等其他乘客,乘客们纷纷抱怨旅行时间太长了。于是聪明的司机 ZZ 给公交车安装了 $k$ 个氮气加速器,每使用一个加速器,可以使其中一个 $D_i$ 减 $1$。对于同一个 $D_i$ 可以重复使用加速器,但是必须保证使用后 $D_i$ 大于等于 $0$

那么 ZZ 该如何安排使用加速器,才能使所有乘客的旅行时间总和最小?

【输入】

第 $1$ 行是 $3$ 个整数 $n, m, k$,分别表示景点数、乘客数和氮气加速器个数。

第 $2$ 行是 $n-1$ 个整数,每两个整数之间用一个空格隔开,第 $i$ 个数表示从第 $i$ 个景点开往第 $i+1$ 个景点所需要的时间,即 $D_i$。

第 $3$ 行至 $m+2$ 行每行 $3$ 个整数 $T_i, A_i, B_i$,每两个整数之间用一个空格隔开。第 $i+2$ 行表示第 $i$ 位乘客来到出发景点的时刻,出发的景点编号和到达的景点编号。

【输出】

输出共一行,包含一个整数,表示最小的总旅行时间。

【输入输出样例】

3 3 2
1 4
0 1 3
1 1 2
5 2 3

【输出样例】

10

【输入输出样例说明】

对 $D_2$ 使用 $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$ 分钟。

【数据范围】

对于 $10\%$ 的数据,$k=0$;

对于 $20\%$ 的数据,$0 \leq k \leq 1$;

对于 $40\%$ 的数据,$2 ≤ n ≤ 50,1 ≤ m≤ 1,000,0 ≤ k ≤ 20,0 ≤ D_i ≤ 10,0 ≤ T_i ≤ 500$;

对于 $60\%$ 的数据,$1 ≤ n ≤ 100,1 ≤ m≤ 1,000,0 ≤ k ≤ 100,0 ≤ D_i ≤ 100,0 ≤ T_i ≤ 10,000$;

对于 $100\%$ 的数据,$1 ≤ n ≤ 1,000,1 ≤ m ≤ 10,000,0 ≤ k ≤ 100,000,0 ≤ D_i ≤ 100,0 ≤ T_i ≤ 100,000$。