班车

P1607 [USACO09FEB]庙会班车Fair Shuttle

匿名 (未验证) 提交于 2019-12-02 23:49:02
题目:逛逛集市,兑兑奖品,看看节目对农夫约翰来说不算什么,可是他的奶牛们非常缺乏锻炼――如果要逛完一整天的集市,他们一定会筋疲力尽的。所以为了让奶牛们也能愉快地逛集市,约翰准备让奶牛们在集市上以车代步。但是,约翰木有钱,他租来的班车只能在集市上沿直线跑一次,而且只能停靠 \(N(1 ≤N≤20000)\) 个地点(所有地点都以1到N之间的一个数字来表示)。现在奶牛们分成 \(K(1≤K≤50000)\) 个小组,第i 组有 \(M_i(1 ≤M_i≤N)\) 头奶牛,他们希望从 \(S_i\) 跑到 \(T_i(1 ≤S_i<T_i≤N)\) 。 由于班车容量有限,可能载不下所有想乘车的奶牛们,此时也允许小里的一部分奶牛分开乘坐班车。约翰经过调查得知班车的容量是 \(C(1≤C≤100)\) ,请你帮助约翰计划一个尽可能满足更多奶牛愿望的方案。 题解: 对于这道题,很显然是一道贪心,而且我们必须将其考虑为有 反悔 机制的贪心。首先在每一站,进行一下的判断: 将在车上的奶牛可以下车的下车 让所有在此站点上车的奶牛上车 如果超过数量,将最远目的地的奶牛赶下车 #include <iostream> #include <set> #include <algorithm> using namespace std; typedef long long ll; const int maxn =