1 条题解
-
0
可乐(数据加强版)题解
思路推导
机器人尚未自爆时,每秒可以停留、沿一条相邻道路移动,或立刻自爆。一个合法方案要么连续执行恰好 次停留或移动,要么先执行 次停留或移动,再在第 次行为自爆,其中 。
为了统一表示这些长度不同的方案,增设一个吸收态 。每座城市都有一条到 的“自爆”转移,而 只有一条到自身的转移。提前自爆后,方案沿唯一的自环补齐剩余秒数。由于补齐没有任何选择,同一方案不会被重复计算。
做法
建立 阶转移矩阵 ,前 个状态对应城市,最后一个状态对应 :
- 对每座城市 ,令 加一,表示停留;
- 对每条无向道路 ,令 和 各加一;
- 对每座城市 ,令 加一,表示自爆;
- 令 ,表示已经自爆的方案唯一地补齐后续时间。
初始行向量只有城市 的分量为 。用二进制快速幂计算初始向量乘 ,再把结果向量的全部 个分量相加并对 取模。
正确性证明
任意未自爆方案唯一对应一条始终位于城市状态、长度为 的增广路径。任意在第 次行为自爆的方案,唯一对应前 次城市转移、一次进入 的转移,以及 次 自环。反过来,删除进入 后的补齐自环,也能唯一恢复原方案。因此合法方案与增广图中从城市 出发的长度 路径构成双射。
矩阵乘法按中间状态分类统计路径,故初始向量乘 的每个分量恰好是到达对应状态的方案数。对全部分量求和即为题目所求。
部分分算法
若图是 正则图,每一步停留或移动共有恒定的 种选择,所以长度 的未爆炸方案数为 ,总答案为 。用二进制拼接同时维护幂与前缀和,可在 时间内完成。
当 且 时,可以按秒维护各城市中尚未自爆的方案数以及已经自爆的方案数,复杂度为 。
复杂度分析
满分算法的时间复杂度为 ,空间复杂度为 。所有乘加都使用 64 位有符号整数并及时对 取模。 时矩阵幂为单位矩阵,答案为 。
- 1
信息
- ID
- 965
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者