洛谷1607 BZOJ1577
- 题意
为了让奶牛们也能愉快地逛集市,约翰准备让奶牛们在集市上以车代步。但是,约翰木有钱,他租来的班车只能在集市上沿直线跑一次,而且只能停靠$N(1 \le N \le 20000)$个地点(所有地点都以1到$N$之间的一个数字来表示)。现在奶牛们分成$K(1 \le K \le 50000)$个小组,第$i$组有$M_i(1 \le M_i \le N)$头奶牛,他们希望从$S_i$跑到$T_i(1 \le Si \lt Ti \le N)$。由于班车容量有限,可能载不下所有想乘车的奶牛们,此时也允许小里的一部分奶牛分开乘坐班车。约翰经过调查得知班车的容量是$C(1 \le C \le 100)$,请你帮助约翰计划一个尽可能满足更多奶牛愿望的方案。
- Solution
- 看见“允许分开乘坐”是好事,因为这算是贪心的标志吧。
- 两只奶牛,终点靠前的先选。这条性质分别讨论一下两条线段的关系很容易发现,不会有更优解。
- 对于每一堆奶牛,能上多少就上多少,但是到底能上多少呢?要看看从上车到下车目前的空位最少是多少。线段树维护奶牛最大(小)值即可。
- tip 注意询问和更新时终点是前一位,细节问题。
|
|