专栏文章

题解:CF2145F Long Journey

CF2145F题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minj1i1s
此快照首次捕获于
2025/12/02 03:13
3 个月前
此快照最后确认于
2025/12/02 03:13
3 个月前
查看原文
这个题,800 吧。
注意到 L=LCMi=1naiL=\operatorname{LCM}_{i=1}^n a_i 一定可以作为格子的循环节,即第 ii 个格子与第 i+Li+L 个格子的状态任意情况下都相同。因此我们可以将格子的数量从 O(m)O(m) 缩到 O(L)O(L) 级别。
现在考虑时间上的循环,由于时间上的循环节长度为 nn,因此本质不同的时空状态只有 O(nL)O(nL) 种。不妨直接对于每种状态通过倍增向右转移,转移策略显然是能往右走就往右走。
fi,j,kf_{i,j,k} 为当前在满足 posmodL=ipos\bmod L=ipospos 的位置,且时间为 tt 满足 tmodn=jt\bmod n = j,走 2k2^k 轮能走到哪里(以上默认下标从 00 开始)。这个状态的好处是状态容易转移,而如果设成走的距离对应时间的话可能不太方便(?
于是转移就是 fi,j,k=fi,j,k1+f(i+fi,j,k1)modL,j+2k1,k1\displaystyle{f_{i,j,k}=f_{i,j,k-1}+f_{(i+f_{i,j,k-1})\bmod L,j+2^{k-1},k-1}}
查询的时候直接从大到小枚举 2k2^k,能走就走。总时间复杂度是 O(TnLlogm)O(TnL\log m) 可过。

评论

0 条评论,欢迎与作者交流。

正在加载评论...