同余最短路

顾名思义,建立在同余基础上的最短路。一般来讲,用于问凑数之类的问题时用,基本思想为 若有 \(ax=b\),求 \(b\) 的数量,则 \(ax=b+kx\) 均为可行解。

1.跳楼机

题目原址

如果你现在能到达第 \(i\) 层,则 \(i+kx\) 层均可到达,所以我们考虑在对 \(x\) 取模的意义下建立多个点表示 \(0-x\),从 \(i\) 号点向 \((i+y)%x\)\((i+z)%x\) 连边,边权分别为 \(y,z\)。然后对每个点跑一遍以 \(0\) 为源点的最短路,求出每个 \(dis[i]\)
\(dis[i]\) 有什么用呢?这表示了对 \(x\) 取模后为 \(i\) 的最小可达楼层,我们便可以据此算出取模后为 \(i\) 的楼层对答案的贡献:\((h-dis[i])/x+1\)。具体细节参照代码。

2.墨墨的等式

题目原址
先将题目所求的 \(l-r\) 转换为 \(r\)\(l-1\) 的答案相减,相对上一题而言,这一题将 \(x,y,z\) 的数量增多了,所以我们任选一个非零的 \(a_i\),以它作为 \(x\) 进行上一题的步骤。答案的统计同上。



由于作者菜菜的,有问题不吝赐教

posted @ 2025-01-15 16:26  GCSG01  阅读(27)  评论(0)    收藏  举报
漂浮磁力线/鼠标吸铁石特效