1 条题解

  • 0
    @ 2026-9-3 11:03:35

    题解

    思路

    最先完成的任务一定是入度为零的源点。固定最早时刻后,沿编号顺序按依赖计算每个任务的最早绝对完成时刻。

    做法

    先令所有源点在第零天完成,顺序计算每个任务最早的不小于全部前驱时刻、且模 kk 等于 hih_i 的时刻。把源点按 hh 排序,依次尝试每个不同的源点小时作为区间左端。

    左端越过某组源点时,把这些源点推迟一整天。由它们向后传播:一个点的时刻只可能增加 kk,且整个扫描过程中至多增加一次,所以所有传播总计为 O(n+m)O(n+m)。维护当前最大完成时刻,即可更新答案。

    无依赖时问题等价于在长度为 kk 的圆周上覆盖所有小时,答案是 kk 减去最大环形空隙。小规模可对每个源点小时重新计算完整最早时刻。

    复杂度

    每组时间复杂度 O((n+m)log⁡n)O((n+m)\log n),空间复杂度 O(n+m)O(n+m)。

    • 1

    信息

    ID
    1406
    时间
    2000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    0
    上传者