1 条题解

  • 0
    @ 2026-9-3 10:42:44

    思路

    设 did_i 表示蚂蚁从 yiy_i 向右走到 xix_i,并把这段过程中触发的虫洞状态变化完整抵消后,额外经历的时间。所有位于 yiy_i 右侧且不超过 xix_i 的较早虫洞都会贡献一次已经计算出的 dd。

    令 pip_i 为第一个满足 xpi≥yix_{p_i}\ge y_i 的下标,则

    di=xi−yi+∑j=pii−1dj.d_i=x_i-y_i+\sum_{j=p_i}^{i-1}d_j.

    做法

    维护前缀和 Di=∑j=1idjD_i=\sum_{j=1}^{i}d_j。由于 xix_i 严格递增,可用二分查找求出 pip_i,从而常数时间计算区间和:

    di=xi−yi+Di−1−Dpi−1.d_i=x_i-y_i+D_{i-1}-D_{p_i-1}.

    若虫洞 ii 初始活动,蚂蚁第一次到达它时会传送并增加 did_i 的时间;若初始静止,则第一次只会开启它,不产生这段额外时间。因此答案为基础直行时间 xn+1x_n+1,再加上所有满足 si=1s_i=1 的 did_i。全程对 998244353998244353 取模。

    正确性证明

    从 yiy_i 返回 xix_i 的直接行走时间为 xi−yix_i-y_i。在该区间内,每个较早虫洞的状态会被再次遇到,并恰好产生其已定义的完整额外过程;区间外虫洞不会被经过。由严格递增的坐标,受影响虫洞正是下标 pip_i 到 i−1i-1,故递推正确。

    初始活动的虫洞在首次到达时触发一次对应额外过程,初始静止的虫洞只改变状态。把基础直行时间与全部初始活动虫洞的独立递推贡献相加,就完整且不重不漏地统计了总时间。

    复杂度

    每个虫洞进行一次二分查找,时间复杂度为 O(nlog⁡n)O(n\log n),空间复杂度为 O(n)O(n)。

    • 1

    信息

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