1 条题解

  • 0
    @ 2026-8-14 16:48:52

    题解

    核心思路:按轮 DP 与区间扫描

    每个值只需保存能以它结尾的至多两个不同的“最后接龙者”,便可判断下一轮能否换人。对每个人的词库,用差分计数扫描所有长度 2..k 的连续段,把可达起点向后覆盖成新终点。逐轮计算到最大询问轮数。

    算法流程

    1. 读入题目给出的全部数据,并初始化核心状态。
    2. 执行本题的关键处理:每个值只需保存能以它结尾的至多两个不同的“最后接龙者”,便可判断下一轮能否换人。对每个人的词库,用差分计数扫描所有长度 2..k 的连续段,把可达起点向后覆盖成新终点。逐轮计算到最大询问轮数。
    3. 根据最终状态输出答案。边界、计数和中间结果使用能够覆盖题目上限的数据类型;完整实现见 std/main.cpp

    正确性说明

    核心状态只保存影响后续决策的全部信息;每次转移(或贪心选择)都与题意中的一次合法操作一一对应,且不会遗漏更优候选。因此处理结束时得到的状态恰好覆盖全部合法方案,其中所取最优值就是题目要求的答案。

    复杂度

    • 时间复杂度:O(rmaxl)O(r_{max}\sum l)
    • 空间复杂度:O(l+V+q)O(\sum l+V+q)
    • 1

    信息

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