简单图论题 - P2371,BZOJ 4773,P1119,P5994
P2371 墨墨的等式
经典同余最短路。长得像个完全背包,但数据范围很大。
可以发现,若 \(xa_i+y\) 能被凑出来,那么 \(\forall k\in [0,+\infty),(x+k)a_i+y\) 也能被凑出来。于是我们找到 \(mn=\min_{1\le i\le n} a_i\),然后建 \(n\) 个点 \(0\sim (mn-1)\),并对于所有 \(u\in [0,mn),i\in [1,n]\),将 \(u\) 与 \((u+a_i)\bmod mn\) 之间连一条边权为 \(a_i\) 的边。以 \(0\) 为源点跑单源最短路,得到的 \(dis_u\) 就是当 \(y=u\) 时,最小的 \(x\),此时 \([1,lim]\) 中能被凑出来的数的个数就是:
\[\lfloor \frac{lim-dis_u}{mn}\rfloor+1
\]
将原问题差分成 \([1,r]-[1,l-1]\) 即可,时间复杂度 \(\mathcal{O}(nV\log(nV))\)。
bzoj4773 负环
倍增处理邻接矩阵即可,\(\mathcal{O}(n^3\log n)\)。
P1119 灾后重建
Floyd 的过程中,我们实际上是枚举了一个中转点,并用其它点到中转点的距离更新最短路。所以按时间顺序枚举中转点即可。
P5994 [PA2014] Kuglarz
好题!可以发现我们若知道 \([x,y)\) 和 \([y,z)\) 的奇偶性,那么我们就知道了 \([x,z)\) 的奇偶性。也就是,我们要用最小的代价使得所有点连通,所以求出最小生成树即可。
Written by Alan_Zhao