AGC011F Train Service Planning

题意:有一条铁路,被 个站台分为 段。站台标号为 ,铁路标号为

列车通过第 段所需时间为 ,可能是双向的或单向的。

现在需要设计一张列车(循环)时刻表。

对于所有的列车,要么从站台 前往站台 ,要么从站台 前往站台

在单向轨道内,不能有两辆相反方向的车互相穿过。列车只能在站点停车等待。

若有一辆开往 的车在时刻 到达站点 ,在时刻 离开站点 ,则下一辆车恰好在时刻 到达站点 ,在时刻 离开站点 。其中 是给定常数。

需要使得时间表中 的列车的所需时间和最短。回答这个最小值,或指出无解。

,时限


应用题啊……

当某个 则无解,否则必定有解。

表示 的车在站点 停靠等待的时间。

表示 的车在站点 停靠等待的时间。记

某个方向的车经过第 段铁路的时间为一段区间,且每 单位时间重复一次。

具体地,在模 循环意义下:

上行车的区间为

下行车的区间为

实际上下行车的式子是全体减去前缀得到后缀,但是走一整次所需的时间是 的倍数,所以在模 意义下可以忽略。这样形式上会更统一。

若这是单向铁路,要求两个区间(在模 意义下)不交。

,上式可以统一为 :

的唯一约束是:单调不减。

  • 于是问题可以转化为:

    你有一个变量 ,初始值任意。

    每次会给出一个模 意义下的区间,要求给 加一定值,使得 落在这个区间内。

    最小化加上的值的和。

    (在本题中,还需加上 才是答案)


考虑 。记 为第 次操作后使得 所需的最小代价。

显然我们需要关心的 一定为给出的某个端点。

边界:

每次操作时,设给出的模意义区间为 ,让 以外的位置转移到 上,然后将它们置为 ,其余不变。

维护 的区间 即可。

复杂度