做题记录 25.5.11

\(\textcolor{purple}\odot\) CF555E Case of Computer Network

对于每个边双存在一种边定向方式使之强连通

先边双缩点得到森林,每个边双内部定向为强连通的,则对于约束 \(s\to t\),若两端在同一边双中则一定合法,若两端所属的边双缩点后不在同一颗树则一定不合法,否则相当于给定了书上一条路径的方向,使用树上差分即可

时间复杂度 \(O(n+m+q\log n)\),若使用 \(O(n)-O(1)\) \(\text{lca}\) 则做到 \(O(n+m+q)\)

代码

\(\textcolor{purple}\odot\) P4630 [APIO2018] 铁人两项

建出圆方树,则对于给定的 \(s\)\(f\),合法的 \(c\) 的数量为圆方树上两者之间路径上的方点的相邻圆点的数量减 \(2\)

方点赋权值为相邻圆点数量,圆点赋权值为 \(-1\),则转化为路径上的点权和

转化为给定一个森林,对于所有可达的有序点对,求出路径上点权和的总和

考虑每个点的贡献即可

时间复杂度 \(O(n+m)\)

代码

参考

posted @ 2025-05-12 06:30  Hstry  阅读(3)  评论(0)    收藏  举报