1 条题解

  • 0
    @ 2025-8-24 22:55:45

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Perta
    broken tower

    搬运于2025-08-24 22:55:45,当前版本为作者最后更新于2024-03-20 09:32:46,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    拿球的总时间是固定的,这个可以不考虑。

    一个朴素的想法是,设 fS,if_{S,i} 表示已经拿了 SS 的球,现在在第 ii 个球的位置所用的最短时间,转移是朴素的,可以获得 24 分。

    我们可以发现一个比较显然的性质:位于 GG 同一侧的球,离 GG 较远的球必然先于较近的被拿。

    那么实际上有效状态 SS 只有 O(N2)O(N^2) 个。设 fl,r,0/1f_{l,r,0/1} 表示拿了编号范围 [1,l)(r,N][1,l)\cup(r,N] 的球,现在在第 l/rl/r 个球的位置所需的最短时间,转移是朴素的。初始有 $f_{1,N,0}=\lvert S-X_1\rvert,f_{1,N,1}=\lvert S-X_N\rvert$。

    GG 左右两边的小球编号分别为 p1,p2p_1,p_2(也可能只有一个),所需时间为 $\min(f_{p_1,p_1,0}+(N+1)\lvert X_{p_1}-G\rvert,f_{p_2,p_2,0}+(N+1)\lvert X_{p_2}-G\rvert)$。

    对于多次询问,我们不妨直接设另一个数组 gg,含义与 ff 相同,初始有 f1,N,0=g1,N,1=0f_{1,N,0}=g_{1,N,1}=0,那么所需时间为 $\min(\lvert S-X_1\rvert+f_{p_1,p_1,0}+(N+1)\lvert X_{p_1}-G\rvert,\lvert S-X_N\rvert+g_{p_2,p_2,0}+(N+1)\lvert X_{p_2}-G\rvert)$。f,gf,g 可以预处理,时间复杂度为 O(N2+Q)O(N^2+Q)QQ 带不带 log\log 都行)。

    看起来似乎没有优化空间了?

    注意到 T5×105T\leq5\times10^5。若去重后不同的球的位置有 nn 个,在最理想的情况下,所需的时间也得是 2+3+4++(n+1)2+3+4+\cdots+(n+1)(每捡一个球后走一米)。若理恵能完赛,至少要求 (n+2)(n+1)21T\frac{(n+2)(n+1)}{2}-1\leq T,也就是说 n103n\geq10^3 时答案全是 No

    去重不影响我们的算法正确性,时间复杂度 O(n2+Q)O(n^2+Q)(最后记得加上拿球的总时间 NN)。

    Code,你怎么知道我 QQ 带了个 log\log

    • 1

    [JOI 2024 Final] 马拉松比赛 2 / Marathon Race 2

    信息

    ID
    9856
    时间
    1500ms
    内存
    1024MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者