CF997D Cycles in product

题意

给你大小为 ​的两棵树 ​,构造一张新图,该图中每一个点的编号为 。如果在 ​中, ​和 ​之间有边,那么在该图上,对于任意 之间有边。同样,如果在 ​中, ​和​之间有边,那么在图上,对于任意 之间有边
求这个图上长度为 的环有多少个,环可以不为简单环,起始点或方向不同的环视为不同的环

,答案对 取模.

题解

上一个长度为 的环和 上一个长度为 的环以不同方式组合对应图上 个环
即答案为 ,其中 表示 上长度为 的环的个数, 表示 上长度为 的环的个数

我们把每个点作为起始点分别计算,考虑到树上所有的环长度均为偶数,令 表示以 为起始点,长度为 的环的个数,有
由于从父亲节点往儿子节点转移十分困难,不妨对于每个点只考虑在其子树中的环然后换根DP

考虑转移
,有
换根DP维护 ,再通过 计算
足以通过此题

代码 codeforces submission 143516835

优化

复杂度瓶颈在 的计算,考虑优化这一过程

,有 ,有 多项式快速幂和求逆可以做到 的复杂度

作者

Fisher Cai

发布于

2022-01-26

更新于

2022-05-06

许可协议

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×