1 条题解

  • 1
    @ 2026-9-26 22:55:52

    定义 dpk,idp_{k,i} 表示恰好观看了 kk 部电影,且最后一部观看的是第 ii 部电影时,所花费的最小总时间‌。若不可达,则 dpk,i←∞dp_{k,i}\gets\infin。

    当只观看 11 部电影时,没有路途消耗,只需支付播放时间:

    dp1,i←⁡tidp_{1,i}\gets⁡t_i

    其他状态初始不可达:

    dpi,j←∞(2≤⁡i≤⁡N)dp_{i,j}\gets\infin(2\le⁡i\le⁡N)

    对于 dpk,idp_{k,i},枚举第 k−1k−1 部电影的下标 j(1≤⁡j<i)j(1\le⁡j<i)。dpk,idp_{k,i} 可分为以下几部分:

    • 观看前 k−1k-1 部电影的时间 dpk−1,jdp_{k-1,j}。
    • 从电影院 pjp_j 到 pip_i 的时间 ∣pi−pj∣|p_i-p_j|。
    • 看电影 ii 的时间 tit_i。

    因此转移方程如下:

    $$dp_{k,i}\gets\min_{1\le⁡j<i}\{dp_{k−1,j}+t_i+|p_i−p_j|\}$$

    从小到大枚举观看电影的数量 kk。对于每个 kk,检查是否存在某个 ii 使得 dpk,i≤Tdp_{k,i}\le T。如果存在,说明可行,更新答案 ans←⁡kans\gets⁡k。

    如果对于某个 kk,所有的 dpk,idp_{k,i} 都大于 TT,则无法观看 kk 部电影,可以直接跳出循环。

    • 1

    信息

    ID
    7109
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    (无)
    递交数
    133
    已通过
    33
    上传者